2012-08-23 84 views
0

我做的編碼服務器,並需要一點點幫助如何當在目錄中的文件運行PHP文件 - 編碼服務器

我有一個叫上傳目錄,並稱之爲PHP文件videoConverter.php當它運行它有一個循環,將轉換上傳的目錄中的所有視頻文件,並將完成的文件FTP傳輸到流媒體服務器。

沒有與該腳本沒有問題,但問題是,一旦循環結束後也不會轉換循環結束後上傳任何新文件。當文件上傳到上傳的目錄時,我需要找到執行php文件或腳本的地方。

我想使用一個cron作業和運行的PHP文件中的每一秒,但不會保持它運行腳本,而它已經運行?

有沒有人知道解決這個問題的好方法?

回答

2

我不會用PHP堅持這樣的任務,這純粹是編碼工具和文件本身之間的低效層 - 你需要一個事件驅動的工具,而不是一種腳本語言。

我在inotify最好看看在上傳文件夾中的局部變化,然後處理在旅途中的新文件。

我先取將在的Node.js環境中使用inotify wrapper

  • 每當一個新的文件出現,encode(newFile)被調用;
  • 當編碼過程結束時,pushToFTP(encodedFile)回調被觸發並開始傳輸。

獎金,較小的文件不必等到整個作業完成由於異步js架構。

+0

我不能同意你的意見,我不想用PHP堅持,我使用它,因爲我知道,語言best..at的時刻,我需要得到這個工作,但我會看進入那個。我正在使用Ubuntu服務器與ffmpeg進行編碼。所以你建議我使用Node.js和inotify來完成這個任務? –

+0

是的,在控制檯中設置記錄「嘿,文件foo.bar添加到監視文件夾」之後,這只是編寫幾個函數的問題 - 而且你在此期間學到了一件好東西。 – moonwave99

+0

好,非常感謝您的幫助,如果我對node有任何疑問,我會提出一個新問題來幫助用戶羣,但會在這裏刪除URL。 –

0

你可以這樣做:

  1. 腳本從cron醒來,爲 'PID' 文件檢查。
  2. 如果找到一個PID文件,它關閉
  3. 如果它沒有找到一個PID文件,寫入它在當前目錄下的PID。
  4. 然後開始處理視頻文件。
  5. 完成時或任何必須退出的故障時,它將刪除/取消鏈接pid文件。現在

,如果進程失敗,從來沒有解除鏈接失效,這可能產生問題,沒有其他的就業機會將運行。

你可以做的另一件事是有一個引導腳本執行,執行exec( '的ps aux | grep的VIDEO_SCRIPTNAME'); (或其他),並且如果您看到該腳本已在運行,請不要執行視頻轉換腳本。在那個例子中,你會有兩個文件,一個是由cron運行的引導程序,用於檢查視頻轉換是否正在進行,另一個是真正做這項工作的文件。

相關問題