× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

Server->after

在指定的时间后执行函数,需要1.7.7以上版本。

Server->after(int $after_time_ms, mixed $callback_function);

Server::after函数是一个一次性定时器,执行完成后就会销毁。

  • $after_time_ms 指定时间,单位为毫秒
  • $callback_function 时间到期后所执行的函数,必须是可以调用的。callback函数不接受任何参数
  • 低于1.8.0版本task进程不支持after定时器,仅支持addtimer定时器

$after_time_ms 4.2.10以下版本最大不得超过 86400000 此方法是 swoole_timer_after 函数的别名

生命周期

  • 定时器的生命周期是进程级的,当使用reloadkill重启关闭进程时,定时器会全部被销毁
  • 如果有某些定时器存在关键逻辑和数据,请在onWorkerStop回调函数中实现保存

  • 小eye

    timer有$serv->on ( 'Timer', 'my_onTimer' ); after 没有$serv->on ( 'After', 'my_onAfter' );这种形式是吧,

  • DINA

    swoole_timer_after 可以最多可同时执行多少组任务,添加过多的任务会增加cpu开销吗,能稍微分享以下此方法的实现机制吗

  • DINA

    与PHP代码中的pcntl_alarm不同,swoole的定时器是基于EventLoop实现的,不依赖系统信号和PHP的tick机制,所以效率非常高。即使添加大量定时器,CPU消耗也是很低的。

  • 18611867960

    callback函数不接受任何参数?请问那要怎么传参数呢?