workerman与thinkphp5.0结合后实现定时器任务

关于workerman与thinkphp5.0结合方法,请查看我的另一篇文章,此篇讲两个重要点:

在所创建的调用控制器中,上篇例子中的push模块中的Worker控制器中要加入workerman中定时器类的引用,方法是引入定时器类Timer的命名空间:

use Workerman\Lib\Timer;

这样,就可以在Worker的方法中使用定时器方法了:

例:

 public function onMessage($connection, $data)
    {
        $timer_id = Timer::add(1, function()use($connection, $data,&$timer_id)
        {
            $connection->send('timer_id='.$timer_id);
        });
    }
workerman中有

['onWorkerStart', 'onConnect', 'onMessage', 'onClose', 'onError', 'onBufferFull', 'onBufferDrain', 'onWorkerStop', 'onWorkerReload']
这么几种回调方法,在哪里使用定时器,根据业务逻辑订。

需要注意的是,使用定时器的时候,如果用到定时器外面的参数,需要把外面的参数先引入到定时器,才能在定时器中正常使用,不然定时器中不能获得定时器外面的参数。

workerman与thinkphp5.0结合后实现定时器任务_第1张图片

定时器方法每被调用一次,程序就将创建一个定时器任务,可多个方法共存。具体定时器的使用方法,可参阅workerman文档




你可能感兴趣的:(php,workerman,thinkphp5.0)