异步毫秒定时器 [编辑本页]

swoole_server中已经提供了定时器的API,如果是在客户端程序中,也想使用毫秒定时器。可以用swoole提供的swoole_timer模块。

swoole_timer与PHP本身的pcntl_alarm是不同的。pcntl_alarm是基于时钟信号 + PHP tick函数实现,有4个缺陷:

  • 最大仅支持到秒,而swoole_timer可以到毫秒级别
  • 不支持同时设定多个定时器程序
  • pcntl_alarm依赖declare(ticks = 1)性能很差
  • 无法用于异步IO,只支持同步方式

swoole_timer是基于timerfd+epoll实现的异步毫秒定时器,可完美的运行在EventLoop中,与swoole_client/swoole_event等模块可以无缝结合。


  • 你好

    看了很多页,发现关键字“完美”,很自信。

  • 井田 何渐兴

    就是应该要有绝对的自信

  • 咸鱼

    韩大大就是叼

  • 大牛

    swoole_http_server::start(): swoole_timer: onTimeout handler error报这个错误,咋整

  • Rango-韩天峰

    1.8.0以上版本已经移除addtimer定时器了,请使用tick

  • 烈梦

    希望可以增加对于 \swoole_timer_after(0, $callback); 的支持,许多场景需要这么做。比如有时候需要把下一步的操作注册进轮训中,让当前对象可以析构,避免一连串调用占用内存。

  • 李红生

    网络耗时呢。。。。

  • 666