我知道Laravel的隊列驅動程序,比如redis和beanstalkd,我讀過你可以增加beanstalkd等工作的人數。但是我不確定這些解決方案是否適合我的場景。這是我需要的;在後臺運行異步作業(laravel)
我通過套接字連接偵聽XML饋送,並且數據只是保持快速。永遠。我一秒鐘就可以獲得數十個XML文檔。
我一行一行地從這個套接字讀取數據,一旦我到達XML結束標記,我就會將緩衝區發送到另一個進程進行解析。我以前只是在base64中編碼xml,併爲每個xml運行一個單獨的php進程。 shell_exec('php parse.php' . $base64XML);
這讓我很快解析了這個永無止境的xml數據。排序的手動線程。現在我想使用與Laravel相同的功能,但我想知道是否有更好的方法來做到這一點。我相信Artisan :: call('command')不會將它推到後臺。我當然也可以在Laravel中執行shell_exec,但是我想知道是否可以從Beanstalkd或類似的解決方案中受益。
所以真正的問題是這樣的:如何設置beanstalkd或redis驅動程序的隊列工作者數量?就像我想要同時運行20個線程一樣。如果可能,更多。
一個稍微不太重要的問題是:有多少線程太多?如果我有一臺非常高端的專用服務器,可以很好地處理負載,那麼使用這些工具創建500個線程/工作者會在代碼級別上造成任何問題?
非常感謝您的幫助,但老實說,我真正想知道的是如何設置,可以在同一時間運行工人的數量。 –
一個工人basicaly運行PHP命令工匠隊列中的PHP實例:聆聽這裏所說:http://laravel.com/docs/5.1/queues#running-the-queue-listener 如果你只運行一個命令,有是一個工人,如果你跑兩個,你有兩個工人,等等...... 我建議像管理員或工頭一樣來管理你產生了多少過程。 – Atrakeur