1

phpサーバーのバックグラウンド機能を実現して、毎秒いくつかの評価を処理する方法を知りたいです(ユーザーがページを表示するのとは無関係です)。

私の現在のソリューションは、毎秒実行される cron ジョブで行われます。他の選択肢や可能性があれば知りたいです。

前もって感謝します

4

2 に答える 2

0

cron を使用する代わりに、デーモンを作成することをお勧めします。これは、PHP、python、node.js、または好みの言語で行うことができます。スクリプトを作成したら、upstarを使用してデーモンで変換できます。

于 2013-04-09T14:44:56.120 に答える
0

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 13 秒ごとにプロセスを実行していることになります。

最後に、プロセスが高速で軽い (ループが 1 秒未満) 場合は、 の使用を検討してsetIntervalください。

于 2013-04-09T14:59:21.297 に答える