swoole_event_cycle

定义事件循环周期执行函数。此函数会在每一轮事件循环结束时调用。

bool \Swoole\Event::cycle(callable $callback, bool $before = false);
bool swoole_event_cycle(callable $callback, bool $before = false);
  • $callback要设置的回调函数,必须为可执行。$callbacknull时表示清除cycle函数
  • 已设置cycle函数,重新设置时会覆盖上一次的设定
  • $beforeEventLoop之前调用该函数。此参数需要2.1.2/1.10.3或更高版本
  • 设置成功返回true

可以同时存在before=truebefore=false两个回调函数。

需要1.9.24或更高版本

使用实例

Swoole\Timer::tick(2000, function ($id) {
    var_dump($id);
});

Swoole\Event::cycle(function () {
    echo "hello [1]\n";
    Swoole\Event::cycle(function () {
        echo "hello [2]\n";
        Swoole\Event::cycle(null);
    });
});


  • 阿呆

    这个函数是在最新的版本有吗,我虚拟机装的是2.0的版本,提示说没有cycle方法,我重新git pull主分支。重新编译才有cycle这个函数

  • 不死鸟

    在onWorkerStart 里调用swoole_event_cycle, 发现只有worker 0 才执行回调。

  • 不死鸟

    原因是worker可以执行回调, taskworker是不可以的。 猜测是由于taskworker并没有事件循环也就无从cycle了。