使用cpulimit和PHP

时间:2017-03-30 19:58:27

标签: php ffmpeg

我使用PHP exec()在我的服务器上运行FFmpeg

它目前在编码时使用100%的cpu线程。

我关注this gude使用名为cpulimit的程序将其降低到30%。

PHP

$args = "nice -19 cpulimit -l 30 -- ffmpeg -y -i intput.avi -vcodec libx264 -acodec aac -b:a 192k -threads 1 output.mp4"
exec(escapeshellcmd($args));

FFmpeg / PHP有效,它可以通过终端与nice / cpulimit一起使用,但是在添加之后  nice -19 cpulimit -l 30 --到PHP脚本它不再适用于exec()

输出

FFmpeg输出返回空白。我无法看到完整的输出,我尝试使用:

$output = shell_exec($args);
echo "<p>$output</p>"

file_put_contents("/var/www/mysite/logs/$output.log", $line . PHP_EOL, FILE_APPEND);

但他们返回1个空行。

解决方案

我的想法是www-data运行FFmpeg而nice / cpulimit可能需要root?

如何让PHP exec()使用FFmpeg args和cpulimit?

或者是否有另一种限制使用率的方法?

2 个答案:

答案 0 :(得分:0)

如果启用了safemode,则程序的执行受到限制。请在此处查看此文档,http://php.net/manual/en/function.exec.php

答案 1 :(得分:0)

我使用谷歌翻译在这个论坛帖子上找到了答案。

https://murobbs.muropaketti.com/threads/nice-komento-ja-php-n-exec-funktio-ratkaistu.551174/

如果使用nicecpulimit

,请定义FFmpeg的路径
nice -19 cpulimit -l 30 /usr/local/bin/ffmpeg -i ...

现在它可以通过PHP exec()工作。