首頁  >  文章  >  php框架  >  workerman中定時器不生效

workerman中定時器不生效

王林
王林原創
2019-12-13 09:51:142803瀏覽

workerman中定時器不生效

問題引出:

把一個\Workerman\Lib\Timer放在start_gateway.php中執行,每兩秒執行一次,每次執行先記錄一段文字到文字檔。

當以 php start.php start 的方式運行的時候是沒有問題的,但當以php start.php start -d 的方式運行的時候好像計時器並沒有運行起來。

start_gateway.php程式碼如下

workerman中定時器不生效

workerman中定時器不生效

workerman中定時器不生效

問題解決:

業務邏輯都要在onXXX回呼中運作的(手冊中有強調過),換句話說定時器不能在Worker::runAll();執行前運作。

因為Worker::runAll();執行前執行的程式碼都是屬於主行程的,主行程不能有業務碼,主行程的商業程式碼會被子程序繼承,導致與預期結果不符。

上述範例中可以放到onWorkerStart中執行定時器,建議放到start_businessworker.php中的$businessworker->onWorkerStart回呼中。

相關文章教學推薦:workerman教學

#

以上是workerman中定時器不生效的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn