簡體   English   中英

如何在目錄中存在文件時運行PHP文件 - 編碼服務器

[英]How to Run a PHP file when files exist in directory - Encoding Server

我正在編寫一個編碼服務器,需要一些幫助

我有一個名為uploaded的目錄,以及一個名為videoConverter.php的php文件,當它運行時它有一個循環,它將轉換上傳目錄中的所有視頻文件,並將完成的文件FTP傳輸到流服務器。

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

我正在考慮使用cron作業並每秒運行php文件,但它不會繼續運行腳本,而它已經運行了嗎?

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

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

我最好查看inotify以獲取上傳文件夾中的本地更改,然后隨時處理新文件。

我的第一個想法是在Node.js環境中使用inotify包裝器

  • 每當出現新文件時,都會調用encode(newFile) ;
  • 編碼過程完成后,將pushToFTP(encodedFile)回調並開始傳輸。

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

你可以這樣做:

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

現在,如果進程失敗並且從不取消鏈接失敗,則可能會產生問題,不會運行其他任務。

你可以做的另一件事就是有一個bootstrap腳本execute,exec('ps aux | grep VIDEO_SCRIPTNAME'); (或其他),如果您看到腳本已在運行,請不要執行視頻轉換腳本。 在該示例中,您將擁有兩個文件,即由cron運行的引導程序,並檢查當前是否正在進行視頻轉換,以及第二個文件,即實際執行該工作的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM