1

我需要限制以下命令的 CPU 使用率,因为它使用了 100% 的 CPU。

shell_exec("swfrender $swfFile -X 1600 -o $imageFile");

我发现我可以使用 CPULimit 和 Nice,但我不知道如何设置它们。

谁能给我一个简单的例子来说明如何限制上述 shell_exec 任务的 CPU 使用率?

4

2 回答 2

4

单看一下nice手册页就会发现,您可以使用该命令来启动其他设置了指定 nice 级别的推荐。所以在你的情况下,我建议你简单地试试这个:

shell_exec("nice -n 19 swfrender $swfFile -X 1600 -o $imageFile");

我建议您了解安装在每个类 unix 系统上的手册页。如何阅读它们以及如何在其中找到条目。首先阅读该man命令的手册页:man man:-)

于 2012-11-27T08:49:54.250 回答
1

我认为shell_exec没有虚拟化功能,没有shell_exec选择做这样的事情。

如果你想使用cpulimit,那没关系,但你需要在 PHP 中做一些技巧,并且你需要释放你的(例如,在你的下一个代码被 php 解释之前,你shell_exec不会等待执行结束swfrender)。

类似的东西(我假设你的 $swfFile 和 $imageFile 是escapeshellargized):

$pid = exec("swfrender $swfFile -X 1600 -o $imageFile >/dev/null 2>&1 & echo \$!");
exec("cpulimit --pid $pid --limit 65"); // 65%
于 2012-11-27T08:51:53.667 回答