我有一个定期(每小时)运行脚本的计划任务。该脚本与数据库和文件系统进行了一些繁重的交互,并且通常需要几分钟才能运行。问题是,脚本运行时服务器的 cpu 使用率达到峰值并减慢正常操作。有没有办法限制这个过程,让它花费更长的时间但不消耗太多的资源?
我查看了 PHP 的不同配置选项,但似乎没有任何适合我的需要。
将 php.ini 中的 memory_limit 设置为较低的值会导致我的数据对象很容易溢出。
我看过类似的帖子,人们建议在脚本中的某些点使用 sleep() ,但这并不能阻止脚本对服务器的刺激。
最佳解决方案是通过某种方式告诉 Lamp(在本例中为 Wamp)堆栈仅使用 10% 的最大 cpu 利用率。我根本不关心运行时间,如果这意味着每秒节省 cpu 周期,我宁愿花费更长的时间。我的替代解决方案是设置一个具有数据库复制功能的不同服务器,这样 cron 就可以在不减慢其他所有速度的情况下运行。
环境:Windows Server 2k3、Apache 2.2.11、PHP 5.2.9、MySQL 5.1
我很感激对这种情况的任何见解。
编辑:我很欣赏所有答案,即使是 *nix 特定的答案。在我的情况下,改变托管环境还为时过早。无论操作系统如何,希望这个问题都能帮助其他人。