workerman中定時(shí)器不生效

workerman中定時(shí)器不生效

問題引出:

把一個(gè)workermanLibTimer放在start_gateway.php中執(zhí)行,每?jī)擅雸?zhí)行一次,每次執(zhí)行首先記錄一段文字到文本文件。

當(dāng)以 php start.php start 的方式運(yùn)行的時(shí)候是沒有問題的,但當(dāng)以php start.php start -d 的方式運(yùn)行的時(shí)候好像計(jì)時(shí)器并沒有運(yùn)行起來(lái)。

start_gateway.php代碼如下

workerman中定時(shí)器不生效

workerman中定時(shí)器不生效

workerman中定時(shí)器不生效

問題解決:

業(yè)務(wù)邏輯都要在onXXX回調(diào)中運(yùn)行的(手冊(cè)中有強(qiáng)調(diào)過),換句話說定時(shí)器不能在Worker::runAll();執(zhí)行前運(yùn)行。

因?yàn)閃orker::runAll();執(zhí)行前運(yùn)行的代碼都是屬于主進(jìn)程的,主進(jìn)程不能有業(yè)務(wù)代碼,主進(jìn)程的業(yè)務(wù)代碼會(huì)被子進(jìn)程繼承,導(dǎo)致與預(yù)期結(jié)果不符。

上述例子中可以放到onWorkerStart中運(yùn)行定時(shí)器,建議放到start_businessworker.php中的$businessworker->onWorkerStart回調(diào)中。

相關(guān)文章教程推薦:workerman教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享