在我的腳本中,我運行一個exec()函數來製作帶有ffmpeg的電影文件。
問題是ffmpeg的可以在服務器上運行的只有1次,
如果2人是聯機服務器和第一個已經運行的ffmpeg我希望第二個要等到第一端的進程
如何編碼?
謝謝
在我的腳本中,我運行一個exec()函數來製作帶有ffmpeg的電影文件。
問題是ffmpeg的可以在服務器上運行的只有1次,
如果2人是聯機服務器和第一個已經運行的ffmpeg我希望第二個要等到第一端的進程
如何編碼?
謝謝
在某處設置鎖。
當ffmpeg啓動時,在文件或數據庫表中設置一個標誌,將其標記爲正在進行中。每次ffmpeg啓動時,都要檢查標誌值是否爲'1',如果是,請等待並在5或10秒內重試。然後當過程結束時,將標誌設置爲'0'。確保它是否崩潰或者你的腳本有錯誤,標誌被設置回'0'。
或者,您可能會以不同的用戶身份運行ffmpeg進程,並且一次運行多個進程。
對於耶布斯,don't implement your own queue的愛。編寫一個守護進程來拾取消息並處理這些文件。
+1將Jebus拖入此:) – 2010-03-13 02:36:20
我無法編譯和安裝librabbitmq!我無法訪問根服務器 – robert 2010-03-13 02:38:10
您可以使用異步隊列。每個新請求都會作爲消息添加到隊列中。您的進程一次只讀取一條消息並處理轉換請求。
對於PHP隊列,您可以嘗試Dropr或類似的方法。
exec
?如果被警告禁止,因爲共享主機不喜歡你以這種方式使用CPU。他們想要短暫的Http請求(在30秒內)。其餘不適用於您的託管,您應該先升級。就像伊格納西奧說,你應該安裝一個消息隊列(需要有shell訪問的Linux機器)例如像:
希望這有助於你一點點。我也正在用java編寫一個簡單的任務隊列,但我還沒完全完成。希望在大約一週內,我可以在github上提交我的第一個版本。
謝謝,祝你好運 – robert 2010-03-13 05:19:12
如何以不同的用戶身份從php運行進程? – robert 2010-03-13 02:41:55
這可以工作,並且很快,但方式效率不高。在共享主機上,您會在執行此類操作時被禁止。 – Alfred 2010-03-13 03:08:02
@robert如果你在共享主機上,很可能你不能像其他用戶那樣運行某些東西,除非你有多個帳戶。 – JAL 2010-03-13 06:50:30