2011-09-13 27 views
1

我正在使用一個異步的web服務,它發回給我一個作業ID。完整的響應然後通過web服務作爲XML文件(jobId.xml)使用PUT請求發送到我的服務器。如何等待文件與php共存?


發出請求的web服務和獲取作業ID後,我 想知道什麼是最好的(最有效)的方式來等待 ,直到該文件被創建到的PUT目錄我的服務器?


我想每次執行之間有超時usleep()函式()file_exist的循環。

但我相信有更好的辦法。 就像聽衆...

該文件可能需要不到一秒鐘,超過1分鐘才能到達。

謝謝!

回答

1
  1. 您可以使用inotify來監視某個目錄中的文件創建。

  2. 或者,您可以修改您的PUT處理程序來通知您的腳本。例如,您可以創建一個命名管道,從中讀取(阻塞),並修改PUT處理程序對管一寫吧寫文件

+0

哪一個最有效?我將不得不廣泛使用它。 – benjisail

+0

我認爲兩者同樣有效;該腳本將等待,並將在創建文件時被喚醒 – arnaud576875

1

,如果你需要的PHP我不明白過程保持活躍(不返回和死亡)或不。如果不是,請考慮使用incrontab
它就像一個cronjob,但不是在預先配置的時間上運行,而是根據文件更改運行。你可以配置它來偵聽一個目錄,當一個文件在文件系統上完成創建時,incronjob會激發你想要的程序。

這是一個unix/linux操作系統的解決方案。你沒有提到你的操作系統。

+0

linux-only我想,它是否使用inotify – arnaud576875

+0

它在CentOS上 – benjisail

+0

是的我需要在這種情況下進程保持活動狀態。但我不知道incrontab,它可能對其他應用程序有用! – benjisail