phpサーバーのバックグラウンド機能を実現して、毎秒いくつかの評価を処理する方法を知りたいです(ユーザーがページを表示するのとは無関係です)。
私の現在のソリューションは、毎秒実行される cron ジョブで行われます。他の選択肢や可能性があれば知りたいです。
前もって感謝します
cron を使用する代わりに、デーモンを作成することをお勧めします。これは、PHP、python、node.js、または好みの言語で行うことができます。スクリプトを作成したら、upstarを使用してデーモンで変換できます。
1) while ループとスリープを使用してプログラムを作成します。
while (1)
{
if (x == y) {
echo "yay!"
}
sleep(1);
}
2) クラッシュしないようにラッパーを使用してプログラムを作成します。
while test 1
do
php /usr/local/bin/continual_process.php
done
このアプローチの問題は、常に CPU サイクルを使用することです。プログラムを node.js アプリケーションとして作成すると、イベント駆動型のアーキテクチャとsetTimeout
機能がアプリケーションのスケーリングに役立ちます (また、問題を解決するための別の考え方について考えるようになります)。
さらに、ループの処理にかかる時間を考慮する必要があります。プログラムを毎秒呼び出しても、ループするのに 2 秒かかる場合は、プロセスを食い尽くしています! sleep
メソッドも価値がないかもしれません。ループに 2 秒かかる場合、sleep 1
3 秒ごとにプロセスを実行していることになります。
最後に、プロセスが高速で軽い (ループが 1 秒未満) 場合は、 の使用を検討してsetInterval
ください。