ホームページ >バックエンド開発 >PHPチュートリアル >swooleサーバーのタイマーが不正確で不安定です 回答してください。
タイマーによって出力されたログには、次のようにジッターが表示されます。
timer: ##23496 ##2016-09-01 19:23:24
timer: ##23496 ##2016-09-01 19:23: 25
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19 :23:28
タイマー: ##23496 ##2016-09-01 19:23:29
タイマー: ##23496 ##2016-09-01 19:23:30
タイマー: ##23496 ##2016 - 09-01 19:23:31
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ## 23496 ##2016-09-01 19:23:36
タイマー: ##23496 ##2016-09-01 19:23:37
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:40
タイマー: ##23496 ##2016-09-01 19: 23 :41
タイマー: ##23496 ##2016-09-01 19:23:42
タイマー: ##23496 ##2016-09-01 19:23:43
タイマー: ##23496 ##2016-09 - 01 19:23:45
タイマーへのプロセス信号登録に問題はありませんか?それとも、シグナルとサーバーを一緒に使用することに問題がありますか?
コードは次のとおりです:
タイマーによって出力されたログには、次のようにジッターが表示されます。
timer: ##23496 ##2016-09-01 19:23:24
timer: ##23496 ##2016-09-01 19:23: 25
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19 :23:28
タイマー: ##23496 ##2016-09-01 19:23:29
タイマー: ##23496 ##2016-09-01 19:23:30
タイマー: ##23496 ##2016 - 09-01 19:23:31
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ## 23496 ##2016-09-01 19:23:36
タイマー: ##23496 ##2016-09-01 19:23:37
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:40
タイマー: ##23496 ##2016-09-01 19: 23 :41
タイマー: ##23496 ##2016-09-01 19:23:42
タイマー: ##23496 ##2016-09-01 19:23:43
タイマー: ##23496 ##2016-09 - 01 19:23:45
タイマーへのプロセス信号登録に問題はありませんか?それとも、シグナルとサーバーを一緒に使用することに問題がありますか?
コードは次のとおりです:
これは正常です。コンピューターの時計設定を開いて、秒が 4 秒短いか 5 秒長いかを確認してください。詳細は以下をご覧ください
少し前に、リスクラブの誰かが、Windows システムの秒針が最初の 4 秒間は速く動き、次の 1 秒間は遅く動くと言いました。それから彼は、それは地球上の劇的な変化を予告する今年始まったばかりであり、待つのはばかげていると言いました。非常に不賛成です。しかし、この速度が異なるという現象は真実であることがわかり、これはプログラムの問題であると誰かが説明してくれました。
注意深く注意を払った場合は、2K/XP/2K3 システムの右下隅にある時計をクリックして秒針を動かします。非常に興味深い現象が表示されます。最初の数字と秒針が急速に変化します。 4秒、5秒は長く感じますが、なぜですか?
その理由は実際にはそのテーブルの正確さにあります。
Windows C++ プログラミングを学習したことがある場合は、WM_TIMER が一般的に使用されるタイマーであることをご存知でしょう。ただし、このタイマーの精度はそれほど高くありません。 Windows Clock サブルーチンでは、WM_TIMER が実際にタイミングに使用されます。秒針が表示されている場合、テーブルの更新は次のようなステートメントによってトリガーされます:
SetTimer (hWnd、タイマーID、OPEN_TLEN、0L);
SetTimer の使い方は非常に簡単です。タイマーを設定した後は、現在の時刻を再取得し、トリガーされるたびにダイヤルを再描画するだけです。 OPEN_TLEN はタイマーのトリガー時間です。この時間は定数であり、影響を受けるシステムでは 450 として定義されており、0.5 秒未満です。
450msと定義するとどうなるでしょうか?一連の数字を見てみましょう。 1 行目と 3 行目は更新の数で、その下は更新のミリ秒数です。
1 2 3 4 5 6 7 8
450 900 1350 1800 2250 2700 3150 3600
9 10 11 12 13 14 15 16 17
最初の 1 秒間 (
では、なぜこのようなデザインになっているのでしょうか?おそらく、この時計は時間の感覚を与えるだけなので、間違えなければ、二番目の反応は重要ではありません...結局、二番目を見つめる人はこの世に多くありません。一日中手と数を数えます。
上記の説明はオパールに由来しています。