2017-09-06 59 views
0
<?PHP 
    exec("ffmpeg.exe -i something.mp4 -ss 1 -t 1 -r 1 -s 320x240 -y something.jpg"); 
?> 

在調用服務器錯誤500 所有其他要求這個腳本的結果。 PHP 7.01,IIS 10.PHP Exec的(ffmpeg的)失敗IIS上的所有其他要求

我已經排除了問題可能與我的調用的具體ffmpeg參數有關。

執行時間是< 1秒以上,所以不能是PHP或IIS腳本執行超時。

無論一次「通話」到腳本和下一次通話之間經過多少時間,奇數編號的呼叫導致錯誤500,偶數編號的呼叫都很好。

請注意,當我說「呼叫」時,我實際上是指調用腳本(即http://server/script.php) - 而如果我在同一腳本中放置2,3或100次Exec調用,它們都會成功。

編輯:很隨機,我試圖通過在一個循環中調用相同的Exec(「ffmpeg等)行100次來觸發超時,令我驚訝的是,錯誤500消失了所以我刪除了循環,並添加了一個類似暫停加入電話睡覺(10):錯誤500倍的回報,它的瞬間 - 如服務器出現故障甚至解析它之前運行的腳本現在我完全失去了..

任何暗示

+0

可能無關,但刪除'-t 1'並添加'-vframes 1'。由於您只輸出一個圖像,因此命令'失敗'並且其退出代碼不爲零。 – Mulvya

+0

@Mulvya謝謝。然而,正如你所猜測的,沒有改變。我懷疑這可能是比其他更多的FastCgi設置問題... – resle

回答

0

好吧,似乎將PHP的FastCGI協議從命名管道更改爲TCP,修復了這個問題。

它仍然很有趣, h,瞭解是什麼讓命名管道每隔一段時間就會立即失效。設置命名管道沖洗沒有幫助。