2011-08-05 64 views
0

我需要運行一系列的PHP腳本和程序的任務是在隊列中。從PHP Cli或PHP/Apache運行時,任務可能需要10分鐘或更長時間。可能有多個腳本實例。這需要重複發生。 PHP/Apache將沒有用戶交互,它們將與後端/ usr/bin/curl程序交互。PHP CLI或PHP在Apache的長時間運行的任務

我知道PHP-CLI將需要加載的PHP解釋器和它所有的每一個腳本運行時模塊;而在PHP/Apache中,它們是先前加載的,因此技術上PHP/Apache應該更快一些並消耗更少的內存(如同SO中的其他帖子)

我應該通過PHP CLI還是通過專用Apache安裝在系統中僅用於後臺處理?因此從技術上講

# php processtask.php --taskId=1 & 
# php processtask.php --taskId=2 & 

VS

# /usr/bin/curl http://localhost/processtask.php?taskId=1 & 
# /usr/bin/curl http://localhost/processtask.php?taskId=2 & 

如果加載捲曲每次可能會導致更多的資源使用情況的話,我可以用另一個守護進程的腳本,循環和使用curl庫做在不同的線程在同一(這大概不會PHP)

回答

1

我認爲這是愚蠢的安裝,配置和維護的Apache沒有其他原因,而不是脫機運行PHP腳本。想想所有的額外要求和可能出錯的部分。保持簡單並直接使用CLI。

編輯:還要注意的是,你不想只是任何人能斷火的過程中,因此,如果您通過Apache運行,現在你必須添加一個安全層。

2

我使用的是PHP,運行基於CLI的腳本超過每天一萬件商品通過各種隊列運行(偶爾這樣做量的一些倍數)。還有一些較老的系統通過網絡服務器進行訪問,當您嘗試執行大量任務時,額外的開銷會極大地受到限制。

基於Web的工作也必須有額外的工作投入他們避免超時。從命令行運行,或通過shell腳本和/或CRON啓動將是最好的方式。

+0

在CLI上運行速度更快嗎?有沒有辦法配置它作爲服務運行? –