ええ、whileループが可能な限り高速に実行される場合(そうなるでしょう)、データベース接続を圧倒する可能性のある高速レートが得られるだけでなく、ポーリングの「均一」レートも得られません。
次のようなものを試してください
$polllength = 1;
while(1) {
$polltime = microtime(true);
//poll function call;
$endtime = microtime(true);
$sleeptime = $polllength - ($endtime-$polltime);
sleep($sleeptime);
}
このように、ポーリング機能がどのように変化しても、ポーリングは約$ polllength秒離れています(INTARNETSが原因です)
編集:また、whileループから抜け出す方法があることを確認してください。ただし、全員がそのことを知っている必要があります。
負荷分散の場合、完全にハードコーディングされないように、polllength値を何らかの方法で微調整できるようにする必要があります。それが構成ファイルにあるかどうかにかかわらず、それは負荷が増加するにつれて増加する値でさえあるかもしれません。それは、エンドユーザーにとって実際にどのように「感じる」か、そしてサーバーが実際にどのように進んでいるか次第です。経験則として、最大nスレッドはn *(ポーリング長/平均応答時間)ユーザーを意味します。その制限を超えて到達すると、ユーザーが圧倒されたサーバーからの応答を待つため、応答時間が長くなることは間違いありません。