命令行文件
定時任務(wù)命令文件存放在crmeb\command\Timer.php
進程數(shù)設(shè)置
protected function execute(Input $input, Output $output)
{
$this->init($input, $output);
Worker::$pidFile = app()->getRootPath().'runtime/timer.pid';
$task = new Worker();
//設(shè)置進程數(shù)
$task->count = 1;
//執(zhí)行每隔6秒執(zhí)行一次的事件
event('Task_6');
$task->onWorkerStart = [$this, 'start'];
$task->runAll();
}
定時器pid文件存放
存放在根目錄下的runtime/timer.pid
Worker::$pidFile = app()->getRootPath().'runtime/timer.pid';
啟動命令
由一個定時器每過2秒執(zhí)行一次,循環(huán)內(nèi)執(zhí)行訂閱事件
public function start()
{
$last = time();
$task = [6 => $last, 10 => $last, 30 => $last, 60 => $last, 180 => $last, 300 => $last];
$this->timer = \Workerman\Lib\Timer::add($this->interval, function () use (&$task) {
try {
$now = time();
event('Task_2');
foreach ($task as $sec => $time) {
if ($now - $time >= $sec) {
event('Task_' . $sec);
$task[$sec] = $now;
}
}
} catch (\Throwable $e) {
}
});
}
停止定時任務(wù)
public function stop()
{
\Workerman\Lib\Timer::del($this->timer);
}
定時任務(wù)事件執(zhí)行存放文件
\app\subscribes\TaskSubscribe.php
內(nèi)部事件
public function handle()
方法會實例化時執(zhí)行一次
event('Task_2')
每過2秒執(zhí)行一次,對應(yīng)方法onTask_2()
event('Task_6')
每過6秒執(zhí)行一次,對應(yīng)方法onTask_6()
event('Task_10')
每過10秒執(zhí)行一次,對應(yīng)方法onTask_10()
event('Task_30')
每過30秒執(zhí)行一次,對應(yīng)方法onTask_30()
event('Task_60')
每過60秒執(zhí)行一次,對應(yīng)方法onTask_60()
event('Task_180')
每過180秒執(zhí)行一次,對應(yīng)方法onTask_180()
event('Task_300')
每過300秒執(zhí)行一次,對應(yīng)方法onTask_300()