每次请求时,PHP Exec(ffmpeg)都会在IIS上失败

时间:2017-09-06 05:03:21

标签: php iis ffmpeg

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

调用此脚本会导致服务器错误500 每隔一个请求。 PHP 7.01,IIS 10。

我已经排除了问题可能与我通话中特定的ffmpeg参数有关。

执行是&lt;超过1秒,因此它不能是PHP或IIS脚本执行超时。

无论在一个&#34;呼叫&#34;之间经过了多长时间?对于脚本和下一个,奇数编号的调用导致错误500,偶数编号的调用就好了。

请注意,当我说&#34; call&#34;我实际上是指调用脚本(即http://server/script.php) - 而如果我在同一个脚本中对Exec进行2,3或100次调用,它们都会成功。

编辑:非常随机,我试图通过在循环中调用相同的Exec(&#34; ffmpeg等)行100次来触发超时。令我惊讶的是,错误500消失了。所以我删除了循环并添加了一个类似的暂停,通过添加一个sleep(10)调用:错误500返回,并且它是即时的 - 就像服务器在解析它之前无法运行脚本一样。现在我完全失去了..

任何提示?

1 个答案:

答案 0 :(得分:2)

好吧,似乎将PHP的FastCGI协议从命名管道更改为TCP,修复了问题。

但是,了解命名管道每次都会立即失败的原因仍然很有趣。设置命名管道刷新没有帮助。