2011-03-12 58 views
2

我正在製作一個轉碼服務器,它使用FFMPEG將視頻轉換爲flv。用戶上傳視頻後,排隊等待在亞馬遜簡單隊列服務中處理。系統是Linux的Ubuntu的。連續運行PHP腳本等待視頻轉碼

而不是每1分鐘運行CRON我不知道是否有可能連續運行幾個PHP腳本(下載隊列文件,處理下載等)。他們每個人都有自己的隊列,每10秒左右就會查看一次新任務。

我的問題是:

如何檢測腳本是否已在運行?我會每隔1分鐘運行一次CRON,如果其中一個程序不運行,我會再次加載它。這些東西是如何在Linux上完成的? PID文件?

感謝您的幫助, 伊恩

+0

您是否考慮過使用ajax來測試它是否已完成上傳? – Trevor

+1

@Trevor這與問題沒有任何關係。 – ceejayoz

回答

0

是的,你可以使用PID文件
或臨時表,或內存緩存,e.t.c.

但我這樣做:
由cron運行一個執行轉換視頻腳本,並檢查過程被終止或不
這cron的腳本讓電影有什麼需要從數據庫轉換或文件

0

PHP的PEAR存儲庫有一個System_Daemon類,用於從PHP創建守護程序。我已經將它用於一些結果良好的系統。

+0

Tahnknk!我會看看它。 – Ian

1

相反,只有純PHP這樣做的,我可能會用基於gearman(報價wikipedia)溶液中去:

的Gearman是一個開源的應用程序框架 [...] 。
Gearman是 旨在將合適的 電腦任務分配給多臺電腦, 這麼大的任務可以更快地完成更多 。


它與PHP運行良好,這要歸功於gearman擴展,並且將處理大部分排隊的東西給你。

請注意,當您有更多視頻進行轉碼時,它也會促成一些事情,從而更輕鬆地擴展到多個服務器。

+0

嗨,我使用的是亞馬遜SQS,它在添加了一些代碼之後,爲我提供了與gearman相同的功能(並且更少擔心:帶有gearman的機器)。無論如何,更換齒輪工並不能解決我的問題,即如何持續運行應用程序,等待新任務來自隊列 – Ian