デフォルトstream_get_contents
では、60秒間待機してリッスンします。複数のストリームがあり、それらすべてを継続的に聴きたい場合。
foreach内で、1つのストリームを聞いていると、他のストリームを聞くことができません。
すべてのストリームのストリーム出力を継続的にリッスンしてキャプチャするためのソリューションは何ですか?
while(true){
//$streamArray is an array of streams obtained by stream_socket_client("tcp://..);
foreach($streamArray as $stream){
fputs($stream,$command);
stream_get_contents($stream); // and update file/DB (Blocking call)
}
}
注:すべてのストリームについて、私はすでに実行しましたstream_set_blocking( $stream , true );
アップデート:
私の要件は、すべてのストリームをしばらくの間、たとえば30分聞くことです。同時に私は2つのストリームを聞くことができません。ストリームが5つある場合、コードはtime division multiplexing
30分のうち、個々のストリームは6分だけ記録されます。
個々のストリームとレコードに対して個別にAJAXリクエストを行うソリューションが1つあります。確かに、この複数のAJAX呼び出しメソッドを実行したくないのは、コードとCPUが増えるためです。