workerman的方法都要在woker类的回调中执行,否则会报错;只能在onXXXX
回调中添加定时器;可能会有1毫秒左右的误差;定时器不能跨进程删除;同一个进程内产生的定时器id不会重复
use \Workerman\Worker;
use \Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$task = new Worker();
$task->onWorkerStart = function($task)
{
// 每2.5秒执行一次,$args为回调的参数,$persistent为true是定时器一直执行,为false定时器只执行一次
// $id为定时器id,定时器中想使用$id需要使用&(引用传递)
$time_interval = 2.5;
$count = 0;
$id = Timer::add($time_interval, function($id, $count) {
if ($count++ > 10) {
Timer::del($id);
}
echo "task run\n";
}, $args = [&$id, &$count], $persistent = true);
};
// 运行worker
Worker::runAll();