2012-06-01 46 views
2

我正在Linux CentOS服務器上編程一個網站(我計劃升級到一個VPS計劃,我將有root訪問權限)。大部分網站將依賴自動化的腳本。Linux服務器上的自動腳本(不是cron作業)

我有2個關於啓動自動化過程的問題。

  • 有沒有什麼辦法可以啓動一個守護程序線程或類似的東西,它會不斷運行。每次電子郵件帳戶收到新電子郵件時,我都需要執行腳本。我知道可以每分鐘運行一次的cron作業,但有一個經常運行的腳本將是理想的,所以我可以在新電子郵件到達時執行該腳本。

  • 有沒有辦法從代碼(理想情況下是PHP)啓動一個線程,該線程與主程序同時運行。在我使用的腳本中,imap_open用於連接到每次需要幾秒鐘的電子郵件帳戶。但是,如果我可以同時觸發多個併發腳本,那麼理想情況下會減少程序的時間。有沒有辦法做到這一點?

任何有關這些問題的幫助將不勝感激。

+0

在電子郵件進入時有一些觸發PHP腳本的解決方案 - 無需守護進程。也許我可以找到一個鏈接 –

+0

在你的情況下,不需要運行一個守護進程。當您的電子郵件帳戶收到消息時,您可以添加一種觸發器。這個觸發器會運行你的腳本,不再定期檢查。你使用哪個電子郵件客戶端? –

+0

@Idiqual他在服務器上,我不認爲他有一個客戶端正在運行 –

回答

3

完成這一切對於第一部分,有兩個簡單的解決方案:

  1. 使用的Vixie cron @reboot開始規範以重啓時作爲標準用戶啓動守護進程。這個和每一分鐘的cron-jobs都是使用戶能夠輕鬆運行守護進程式服務的唯一機制。

  2. 使用procmail在每次發送電子郵件時啓動一個新腳本。這裏的缺點是procmail會運行,然後在每封電子郵件中啓動一個新程序 - 當您每秒收到100封電子郵件時,與使用inotify(7)來提醒長期存在的程序的守護進程相比,這可能是一個嚴重的障礙關於新電子郵件。

對於第二部分,請查找fork(2)系統調用的包裝。它在半父母和小孩身上乾淨利落地分割出一個程序 - 並允許每個人從此繼續獨立執行。如果孩子和家長將來需要再次交流,那麼可能會看看PHP是否支持線程化執行。

0

那麼incron呢?可能有辦法在你的情況下使用它,但你必須產生一個文件系統事件(例如創建一個新文件)。