2014-12-02 37 views
1

我有無限的,而PHP腳本,它必須全天候運行如何檢測一個php文件仍然在apache上運行?

    在另一個PHP文件
  1. ,我怎麼能檢查是在服務器上運行或停止該文件?
  2. 我該如何發送信號給apache來停止並重新執行該文件?
+0

爲什麼你會像這樣對apache執行一個永不停止的請求,而不是你的操作系統提供的任何服務抽象? – monocell 2014-12-02 07:45:28

回答

0

我打算給文件指定數字。全天候運行的文件將爲the first file,並且將改變第一個文件的狀態的文件將被稱爲the second file。 現在,第一個文件可以寫入文件或數據庫,比如說,每10分鐘一次。通過這種方式,您可以通過檢查該文件及其寫入該文件的最後日期知道它是否正在運行。所以你創建第二個文件或數據庫表,並在其中寫入你想要第一個文件的狀態。示例:活動或禁用。現在,您用第一個文件讀取文件/表,如果它被禁用,則停止執行腳本。

0

最簡單的可能是保存在內存緩存或其他共享位置時間戳的狀態,並有其他PHP腳本檢查狀態時間戳

很容易殺死apache進程,並再次擊中了網頁,將重新啓動腳本。或者您可以添加信號處理程序以在SIGHUP上重新啓動

0

您無法檢查特定文件是否正在運行。您必須檢查進程是否仍在使用該文件運行。這也意味着這不是Apache可以爲你做的事情。你要麼必須:

1)使用依賴於操作系統的殺信號的過程中運行該腳本 2)檢查一個kill信號從腳本

前者裏面需要大量的服務器上的特權,所以第二個可能更容易。

最簡單的方法是讓正在運行的文件寫入某個數據庫或文件以表示它仍在進行,並讀取信號的相同位置以便每隔一段時間停止一次。如果正在運行的進程看到一個停止信號,它可以簡單地從任何循環中斷開。

第二個腳本可以在任何點和任何原因下設置信號,另一個腳本在終止後會很快。

0

如果第一個腳本終止,請將文件寫入名爲error.txt的磁盤,然後讓第二個腳本每分鐘左右檢查一次。

第二個腳本一旦發現error.txt文件將發出信號以重新啓動您的第一個腳本。更實時的是使用數據庫和當前的時間戳。

相關問題