私は、入力されたデータの接続をリッスンし、入力の一時停止中に出力データを書き込むソケットサーバーを持っています。これはループしているので、私のプロセスがすぐに入力を期待していない間に他のプロセスがある程度のCPU時間を持つことを可能にするためにsleep
コールを行っています。sleepとusleepはPHP内部で動作が異なるのですか?
私はこれを知っていますsleep
しかし、usleep
もOSに実行を戻しますか?伝統的に、sleep
のシステムコールは秒しか受け入れられないことを知っているので、私は疑いがあります.10年前にCプログラミングについて読んだ本は、無限ループを本質的にシミュレートするようなハックを含むsleep
は呼び出しますが、CPU時間を他のプロセスに渡すことはありません。 (この本は間違っていたこと、または、もはや正確でないかもしれない、私はちょうどそれが言った何を言っている。)私はLinuxを使用しています
、PHPのバージョン5.6および7.1
が
OSレベルの疑いがあります。 http://man7.org/linux/man-pages/man3/usleep.3.html – ceejayoz
あなたはそれをテストすることができます。 'usleep(10000)'を使ってCPUの負荷を監視してください。 – Halcyon
'select'や' poll'を使って入力が到着するのを待つことができます。あなたのプログラムはより速く応答し、より少ないCPUを使用します。 – mvds