php队列会停止执行吗,php – Laravel Artisan CLI安全地停止守护程序队列工作者
為了處理大量的工作,我運行可變數量的隊列工作者,具體取決于完成的工作量.我不想在完成我們認為合適的時間段內完成需要完成的工作之外運行更多的工人.
目前,我啟動了5個守護程序隊列工作程序用于測試目的,但是在生產中,這個數字可能介于25和25之間. 100名工人,可能更多.我知道在部署時,我必須首先通過使用php artisan down將框架置于維護模式來停止隊列工作,因為–daemon標志導致框架僅在工作程序啟動時加載,因此新代碼不會在部署期間生效,直到工作人員重新啟動.
如果我出于某種原因需要停止工作,我可以使用php artisan將應用程序置于維護模式,這將導致工作人員在完成當前工作(如果他們正在工作)工作后死亡.但是,有時我可能會在不將整個應用程序置于維護模式的情況下殺死工作人員.
有沒有一種安全的方法來阻止工人繼續處理他們當前的工作,然后在不將整個應用程序置于維護模式的情況下死亡?
基本上我需要的是一個php工匠隊列:stop,其行為類似于php artisan隊列:restart,但在作業完成后不會重新啟動worker.
我在那里期待有一個像php工匠隊列:停止命令,這樣做,但似乎并非如此.
使用ps aux | grep php我能夠為工作者獲取進程ID,并且我可以通過這種方式終止進程,但我不想在處理作業的過程中終止進程.
謝謝.
解決方法:
我們已經在我們的應用程序中實現了類似的東西 – 但它并不是Laravel本身內置的東西.您必須通過向if塊添加另一個條件來編輯this file,以便它可以調用stop函數.您可以通過在Worker類中設置一個靜態變量來執行此操作,無論何時運行您必須執行的自定義命令(即php artisan queue:pause),或者通過在某處檢查原子值(即將其設置為一些緩存,如redis,memcached,APC甚至MySQL,雖然這意味著你將使用相同的自定義命令設置這個while循環的每個循環一個MySQL查詢.
標簽:artisan,php,laravel,daemon,queue
來源: https://codeday.me/bug/20191006/1859435.html
總結
以上是生活随笔為你收集整理的php队列会停止执行吗,php – Laravel Artisan CLI安全地停止守护程序队列工作者的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php rdkafka实例,kafka
- 下一篇: php判断端口跳转,PHP判断端口是否打