<blockquote class="danger">代码未经项目实测,仅供参考</blockquote>
`config`下新建
<details>
<summary>timer.php</summary>
~~~
<?php
return [
[
//执行周期(毫秒)
'tally' => 2000,
//事件名称-注意大小写
'event' => 'Timer',
//是否等待事件-事件业务完成后开始周期计算
'wait' => true
]
];
~~~
</details>
`app\subscribe`下新建
<details>
<summary>Timer.php</summary>
~~~
<?php
namespace app\subscribe;
//定时任务事件监听
class Timer
{
/**
* 命名规范是on+事件标识,所以该方法的事件名称为event('Timer')
*/
public function onTimer()
{
var_dump(time());
}
}
~~~
</details>
启动后输出如下
![](https://img.kancloud.cn/d1/a2/d1a2b8d9bfc74d77c00e428c56d5f8f6_377x155.png)
实现过程在`app\listener\SwooleBoot.php`:`private function initTimer()`
等待模式是通过新建一个`Process`通过`\Co::sleep`完成,非等待模式为`swoole_timer_tick`.两者均为毫秒级控制.