Timer定时器同步问题

workers

问题描述

据测试Timer定时器应该是异步的执行模式,有没有办法用它实现同步执行操作?

echo date('Y-m-d H:i:s') . '开始' . PHP_EOL;
$timeId = Timer::add(3, function () use (&$timeId) {
    echo 'Timer:' . date('Y-m-d H:i:s');
    return;
}, [], false);
echo date('Y-m-d H:i:s') . '结束' . PHP_EOL;

如图所示,执行顺序为
截图

想改为开始->Timer->结束的执行顺序的话,应该怎么改?
注:结束语句不能写在Timer回调函数里,因为是在webman的http进程下,需要return json给前端。

656 1 0
1个回答

walkor 打赏

类似这种这个要用workerman v5 配合Timer::sleep();

composer require workerman/workerman ^5.0.0-beta.7
composer require revolt/event-loop ^1.0.1

业务代码类似

echo date('Y-m-d H:i:s') . '开始' . PHP_EOL;
Timer::sleep(3);
echo 'Timer:' . date('Y-m-d H:i:s');
echo date('Y-m-d H:i:s') . '结束' . PHP_EOL;
  • workers 2023-12-04

    老大,webman1.4好像不支持,有计划让webman支持workerman v5吗?

  • walkor 2023-12-04

    升级webman 1.5

×
🔝