我有一個通過REST API提供某種服務的網站。所有功能都具有常規的HTTP請求 - 響應邏輯。但另外我需要另一個PHP腳本來做一些連續的事情。一方面,這個腳本應該可以訪問所有的核心服務功能(核心引擎,存儲過程等)。另一方面,這個腳本應該保持與第三方服務的持久連接,並且不時地從中讀取一些信息。另外,這個腳本應該是容錯的,並且應該保證這個腳本只有一個實例在任何時候運行。還有一些原因讓我無法將這個任務放在Cron服務上,而不是運行無限的腳本。PHP服務(守護進程)
我現在最好的想法是編寫一個普通的PHP腳本,它以set_time_limit(0)開頭,並且包含我的東西動作和睡眠後的無限循環。該腳本將手動啓動。此外,我可以使用某種密碼來保護此腳本,以確保沒有其他人能夠運行它。你們對這個解決方案有什麼看法?這種解決方案是否會影響一些不想要的FastCGI副作用?我怎樣才能使這個解決方案容錯?我該如何停止這個腳本,或者檢查它是否正在運行?最後一件事:我怎樣才能通過HTTP請求運行這個腳本,這樣它就不會阻塞任何東西(有點像後臺運行的CURL或其他東西)。謝謝!
嗯,我需要保持與第三方服務的持續連接,並且由於我無法在腳本實例之間傳遞連接的套接字,唯一的方法是連續腳本而不是Cron。我需要保持連接持久性,因爲我需要儘量減少對第三方服務的請求之間的延遲。如果我將使用Cron,那麼我將有額外的DNS解析和TCP連接延遲。即使DNS將被緩存,我也無法消除TCP連接延遲。而我的服務器是CentOS服務器。以某種方式影響你的建議? –
該腳本實際上** IS **持久。 Crond僅用於啓動腳本並在腳本崩潰時重新啓動它(您使用的術語是「容錯」)。在腳本內部,你仍然有某種「無限循環」。是的,CentOS也使用Upstart。 – Shi
考慮到你寫的所有內容後,我想我會嘗試製作Upstart腳本和看門狗Cron任務。感謝您的幫助,隊友! :) –