7

我有这个需要在共享虚拟主机上运行的 php 脚本。我创建了一个执行 sh 脚本的 cron 作业。cron 的命令是:

/bin/sh /home/user/script.sh

所以我假设它是 Bourne Shell(或兼容的东西)。脚本本身是:

#!/bin/sh
cd /home/user/public_html/folder/
#updating DB
php -q ./run_interactive_job.php batch_control_files/updateDB
echo Updated DB results

我的问题是
我可以在 php 命令中添加Nice优先级吗?还是我需要将它添加到 cron 命令的脚本中。哪一个更有可能起作用?

nice 10 php -q ./run_interactive_job.php batch_control_files/updateDB

以较低的优先级运行会成功吗?

PS:基本上,这个脚本在我通过浏览器运行它之前已经使服务器超载,它影响了该服务器上的 apache,导致我的主机阻止了文件。我一再要求他们解锁以使用不同的参数对其进行测试。现在我试图通过 cron 以较低的优先级运行它,希望它不会影响 apache。但我不希望它再次产生问题,因此我正在尝试使用NICE

如果有人有任何其他建议可以提供类似的运行 php 脚本而不影响 apache 或网络服务器的解决方案,那也很好。

4

3 回答 3

6

跳过 shell 脚本并使用

* * * * * /usr/bin/nice -n 10 /path/php -q /path/script.php

nice 和\或 php 路径可能需要也可能不需要

于 2013-01-17T03:17:45.800 回答
2

很抱歉,我在两个地方问了这个问题,因为我以为我没有得到回应。我向超级用户询问,我收到了适合我需要的答案。

@Dagon - 来自 Dagon 的答案似乎也很有效,当我用任一解决方案解决了这个问题时,我会提供更新。

超级用户提出了同样的问题 - https://superuser.com/questions/537509 ...

更新:我使用了如图所示的批处理文件。我在批处理文件中的 php 之前使用了 nice 命令。唯一的区别是:

nice -n 10 php -q ./run_interactive_job.php batch_control_files/updateDB

我添加了更多命令来运行具有相同良好属性的其他 php 脚本。他们都工作得很好。

感谢大家的投入

于 2013-01-17T03:32:46.390 回答
0

无论哪种方式都很好。如果把 放在niceCron 作业本身,会影响整个作业的优先级;但由于脚本仅包含一个命令,其优先级设置确实有意义,因此在脚本中执行此操作在实践中同样有效。

于 2013-01-17T07:43:56.537 回答