我有这个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或网络服务器,那也很不错。
答案 0 :(得分:6)
跳过shell脚本并使用
* * * * * /usr/bin/nice -n 10 /path/php -q /path/script.php
很好和\或php路径可能需要也可能不需要
答案 1 :(得分:2)
对不起,我在两个地方问了这个问题,因为我觉得我没有得到答复。 我在超级用户那里问过,我收到了一个符合我需要的答案。
@Dagon - Dagon的回答似乎也有效,当我用任何一个解决方案解决这个问题时,我会提供更新。
The same Question asked at Superuser - https://superuser.com/questions/537509 ...
更新:我使用了那里显示的批处理文件。我在批处理文件中的php之前使用了nice命令。唯一的区别是:
nice -n 10 php -q ./run_interactive_job.php batch_control_files/updateDB
我添加了更多命令来运行具有相同nice属性的其他php脚本。他们都很棒。
感谢所有人的输入
答案 2 :(得分:0)
无论哪种方式都没问题。如果将nice
放在Cron作业本身,它将影响整个作业的优先级;但由于脚本只包含一个命令,其优先级设置确实有意义,所以在脚本中执行它在实践中同样有效。