系統定時器支持秒級定時,自定義定時器支持毫秒級
如下是定時器接口的實現
```php
<?php
/**
* Created by PhpStorm.
* User: xavier
* Date: 2018/8/15
* Time: 下午5:45
*/
namespace app\lib;
use xavier\swoole\Component\Timer as TimerC;
class Timer extends TimerC
{
public function _initialize(...$arg)
{
// TODO: Implement _initialize() method.
}
public function run()
{
// TODO: Implement run() method.
var_dump('timer');
}
}
```
只需要在定時器配置中配置定時任務的時間
```php
<?php
/**
* Created by PhpStorm.
* User: xavier
* Date: 2018/8/15
* Time: 下午2:14
* 秒 分 時 日 月 星期幾
* crontab 格式 * * * * * * => "類"
* *中間一個空格
* 系統定時任務需要在swoole.php中開啟
* 自定義定時器不受其影響
*/
return [
'*/5 * * * * *'=>'\\app\\lib\\Timer',//每5秒執行一次,從第一位一次表示 秒,分,時,日,月
];
```
同時定時任務支持在任務進程執行
```php
<?php
use xavier\swoole\Timer;
//支持回調
Timer::tick(1000,function(){
});
//支持執行定時器接口實現的類
Timer::tick(1000,'\\app\\lib\\Timer');
```
不建議在任意進程隨意使用定時器,建議使用系統配置的定時器,請注意自定義定時器使用和銷毀
系統配置的定時器,在第一個worker創建一個定時器,根據任務是否到期需要執行來進行異步任務投遞,并不會對當前進程造成阻塞,但是需要配置task_work_num