有沒有辦法如何確保某個進程會一直運行?一直在運行的進程
比方說,我需要用它來運行:
php -f myscript.php -param1=value1
我現在這樣說:
的proccess啓動和PID被寫入到文件(右後myProcess.pid )。 然後我安排了一個cronjob,它定期試圖每5分鐘一次又一次地啓動這個過程。
該過程實際上是一個bash腳本文件,它首先檢查myProcess.pid是否存在,以及是否如果該文件中的PID真的在運行,如果不是,它將啓動它並重寫「myProcess .pid「與新的PID。
有幾個問題與解決方法:
- 什麼「的cron檢查」之間的「封鎖」時間?
- 這段時間呢?花費CPU時間不夠5分鐘?
- 如果文件myProcess.pid已被入侵或剛剛被某人/某物刪除,該怎麼辦?然後,bash腳本再次啓動它,即使它已經在運行。
- 如果過程死亡並且確切的PID需要另一個過程會怎麼樣?
有沒有更好的方法存在?
你談論創建一個後臺程序:http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/ – 2011-08-13 10:47:51
類似於您當前的解決方案:在您的crontab中使用lockrun,並且每隔一秒左右輪詢一次。如果最大執行時間爲0,您還可以延長cronjob時間,並進入無限循環,並擁有良好的睡眠。如果它被殺死,它仍然會在x秒內被cronjob調用。 – Garuda