定期的に(1時間ごとに)スクリプトを実行するスケジュールされたタスクがあります。このスクリプトは、データベースおよびファイルシステムとのやり取りが多く、実行に数分かかります。問題は、スクリプトの実行中にサーバーのCPU使用率が急上昇し、通常の操作が遅くなることです。このプロセスを抑制して、時間がかかりますが、多くのリソースを消費しないようにする方法はありますか?
PHPのさまざまな構成オプションを調べましたが、自分のニーズに合うものはないようです。
php.iniのmemory_limitを低い値に設定すると、データオブジェクトが非常に簡単にオーバーフローします。
スクリプトの特定のポイントでsleep()を使用することを提案した同様の投稿を見ましたが、それでもスクリプトがサーバーをスパイクするのを防ぐことはできません。
最適な解決策は、ランプ(この場合はWamp)スタックに最大CPU使用率10%のみを使用するように指示する方法です。私はランタイムについてはまったく心配していません。1秒あたりのCPUサイクルを節約することを意味する場合は、もっと時間がかかることを望んでいます。私の代替ソリューションは、データベースレプリケーションを使用して別のサーバーをセットアップし、cronが他のすべての速度を低下させることなく町に行くことができるようにすることです。
環境:Windows Server 2k3、Apache 2.2.11、PHP 5.2.9、MySQL 5.1
この状況についての洞察に感謝します。
編集: * nix固有の回答も含め、すべての回答に感謝します。私の状況では、ホスティング環境を変更するのはまだ十分早いです。うまくいけば、この質問はOSに関係なく他の人を助けるでしょう。