我需要限制以下命令的CPU使用率,因为它使用了100%的CPU。
shell_exec("swfrender $swfFile -X 1600 -o $imageFile");
我发现我可以使用CPULimit和Nice,但我不知道如何设置它们。
有人能给我一个简单的例子来说明如何限制上述shell_exec任务的CPU使用率吗?
答案 0 :(得分:4)
单击nice
联机帮助页会显示您可以使用该命令启动其他奖励,并设置指定的好级别。所以在你的情况下,我建议你试试这个:
shell_exec("nice -n 19 swfrender $swfFile -X 1600 -o $imageFile");
我建议您了解每个unix系统上安装的联机帮助页。如何阅读它们以及如何在那里查找条目。首先阅读man
命令的联机帮助页:man man
: - )
答案 1 :(得分:1)
我认为shell_exec
没有虚拟化功能,没有shell_exec
选项可以做这样的事情。
如果你想使用cpulimit,那没关系,但你需要在PHP中做一些技巧,你需要释放你的shell_exec
(例如,你不会等待在你的下一个代码被php解释之前swfrender
执行结束。
类似的东西(我假设你的$ swfFile和$ imageFile是escapeshellarg
ized):
$pid = exec("swfrender $swfFile -X 1600 -o $imageFile >/dev/null 2>&1 & echo \$!");
exec("cpulimit --pid $pid --limit 65"); // 65%