基础入门 - 定时器

优质
小牛编辑
135浏览
2023-12-01

通过调用swoole_server->tick()可以新增一个定时器。

worker进程结束运行后,所有定时器都会自动销毁

tick/after定时器不能在swoole_server->start之前使用

在request事件中使用

  1. function onRequest()use($server) {
  2. $server->tick(1000, function() use ($server, $fd) {
  3. echo "hello world";
  4. });
  5. }

在onWorkerStart中使用

  • 低于1.8.0版本task进程不能使用tick/after定时器,所以需要使用$serv->taskworker进行判断
  • task进程可以使用addtimer间隔定时器
    1. function onWorkerStart(swoole_server $serv, $worker_id)
    2. {
    3. if (!$serv->taskworker) {
    4. $serv->tick(1000, function ($id) {
    5. var_dump($id);
    6. });
    7. }
    8. else
    9. {
    10. $serv->addtimer(1000);
    11. }
    12. }