2016-02-12 22 views
0

我試圖運行排隊的作業,並通過命令行傳遞附加參數。我的用例是這樣的:運行技巧隊列:使用其他參數

我有4個運行queue:work進程通過主管。我的隊列中的作業都需要訪問代理服務器,通過它我只能在任何給定時間運行4個進程。當我啓動排隊作業時,必須找到當前未使用的進程號(1到4),然後通過該進程運行我的命令。

我一直在使用數據庫表來存儲進程,它有一個in_use的列,它跟蹤它是否被使用,但我看到的問題是當兩個queue:work命令同時運行時,相同的代理進程可以從數據庫中挑選出來。

我想要什麼

php artisan queue:work --process=1

然後以某種方式獲取工作中這樣的說法,這樣我就可以各自獨立運行我的4個進程中的主管。

作爲一種解決方法,我創建了一個自定義的artisan命令,它將接受參數,但是然後我失去了隊列功能。我不想開發自定義隊列過程。

有沒有辦法通過這個論點?或者,或者,有沒有辦法可以將我的自定義工匠命令中的作業從隊列中彈出,然後手動運行而不是通過queue:work

+0

爲什麼不把專用的隊列對這些流程?然後你可以指定你的任務應該被推送到哪個隊列,這樣它就會自動使用你想要的代理連接? https://laravel.com/docs/5.1/queues#pushing-jobs-onto-the-queue查看部分指定工作隊列 –

+0

這可能是我最終要做的....你如何得到來自作業內部的進程ID呢?我想當我嘗試創建一個作業時,我可以查詢'jobs'表,瞭解每個進程上排隊的作業數量,然後將作業推送到最小的隊列中,並將相同的進程ID傳遞到作業構造器中? – Jeff

+0

我很難告訴你如何去做,因爲我不知道你的代碼的結構。我希望你能找到一種方法讓它適合你! –

回答