2013-11-28 447 views
0

好的,這將是一個非常奇怪的請求/問題。從PHP啓動shell命令

有一個非常長的PHP腳本,需要由用戶(管理員)在技術上不太熟練的用戶啓動。當通過apache運行腳本時,會引發超時(502或504 Bad Gateway)。

我們假設apache無法配置爲解決超時問題。

我想在管理面板中創建一個按鈕,向服務器上的PHP腳本發送一個AJAX調用,該PHP腳本將充當各種代理來啓動shell命令。然後,shell命令將執行長時間運行的PHP腳本,但是我不希望它等待長時間運行的腳本完成。代理PHP腳本可以退出並根據shell命令是否實際啓動返回true/false(這部分是可選的)。

基本上,讓PHP啓動一個啓動PHP腳本的shell命令。

我該如何解決這個問題?

+0

這不是一個奇怪的問題......它實際上是相當普遍的,並在此前被問過很多次。真正的問題是,雖然......你可以在這臺服務器上做什麼?您可能會發現克倫職位最適合需要定期發生的特定事情。另外,如果需要,還可以使用工作排隊方法。你想要做什麼? – Brad

+0

我對服務器有完全的根權限。我知道有關cron的工作,並且有幾個已經設置完成其他任務。然而這個任務取決於用戶的行爲。我試圖在一些opencart產品上運行超過100,000條記錄的巨大插入/更新。這些查詢已經全部優化,只有很多順序。 –

+0

我會在數據庫中設置一個作業隊列表,並在用戶計劃作業時添加一行。每分鐘都有一份cron工作來啓動這項工作。然後,它可以更新其在該數據庫中的狀態以供用戶查看。還有其他排隊系統可用,甚至可以使用一些pub/sub,但對於簡單的事情來說,啓動作業的cron作業效果很好。 – Brad

回答