ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# swoole\_server->addtimer ~~~ 此方法已移除,请勿使用 ~~~ 设置定时器。1.6.12版本前此函数不能用在消息队列模式下,1.6.12后消息队列IPC模式也可以使用定时器。 ~~~ bool swoole_server->addtimer(int $interval); bool swoole_server_addtimer(swoole_server $serv, int $interval); ~~~ 第二个参数是定时器的间隔时间,单位为毫秒。swoole定时器的最小颗粒是1毫秒。支持多个定时器。此函数可以用于worker进程中。 * swoole1.6.5之前支持的单位是秒,所以1.6.5之前传入的参数为1,那在1.6.5后需要传入1000 * swoole1.6.5之后,addtimer必须在onStart/onWorkerStart/onConnect/onReceive/onClose等回调函数中才可以使用,否则会抛出错误。并且定时器无效 * 注意不能存在2个相同间隔时间的定时器 * 即使在代码中多次添加一个定时器,也只会有1个生效 > 1.7.5之后onStart回调中不再支持定时器 > 建议使用tick定时器,addtimer定时器未来或将移除 **增加定时器后需要为Server设置onTimer回调函数,否则Server将无法启动**。多个定时器都会回调此函数。在这个函数内需要自行switch,根据interval的值来判断是来自于哪个定时器。 面向对象风格: ~~~ $serv->addtimer(1000); //1s $serv->addtimer(20); //20ms ~~~ ~~~ $serv->on('Timer', 'my_OnTimer'); function my_OnTimer($serv, $interval) { echo "Timer[$interval] is call\n"; } ~~~