秒級定時任務(wù)
EasySwoole
沒有直接提供最小粒度為秒級的定時任務(wù),但是可以變相實現(xiàn)。使用 EasySwoole
的自定義進程組件 + 協(xié)程 Sleep 即可實現(xiàn),使用方式如下:
創(chuàng)建一個秒級定時任務(wù)類(自定義進程類)
定義一個自定義進程類繼承 \EasySwoole\Component\Process\AbstractProcess
父類,如下所示,新建一個文件 \App\Crontab\SecondCrontab
:
<?php
namespace App\Crontab;
use EasySwoole\Component\Process\AbstractProcess;
class SecondCrontab extends AbstractProcess
{
protected function run($arg)
{
while(1) {
// 這里寫執(zhí)行邏輯
// to do something.
// 這里表示每秒打印一個日期時間字符串,僅供參考
var_dump(date('Y-m-d H:i:s'));
// 休息1秒
\Co::sleep(1);
}
}
}
注冊秒級定時任務(wù)
在 EasySwoole
框架全局的 mainServerCreate
事件(即項目根目錄的 EasySwooleEvent.php
文件的 mainServerCreate
方法中)中進行秒級定時任務(wù)注冊。
<?php
namespace EasySwoole\EasySwoole;
use App\Crontab\SecondCrontab;
use EasySwoole\Component\Process\Manager;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
class EasySwooleEvent implements Event
{
public static function initialize()
{
date_default_timezone_set('Asia/Shanghai');
###### 注冊秒級定時任務(wù) ######
$process = new SecondCrontab(new \EasySwoole\Component\Process\Config([
'enableCoroutine' => true
]));
Manager::getInstance()->addProcess($process);
}
public static function mainServerCreate(EventRegister $register)
{
}
}