기본적으로 stream_get_contents
은 60 초 동안 대기합니다. 여러 개의 스트림이 있고 모든 스트림을 연속적으로 들으려면stream_get_contents()에 의해 지속적으로 다중 TCP 스트림을 수신하는 방법은 무엇입니까?
foreach 내부에서 하나의 스트림을 듣고 있는데 다른 스트림을들을 수 없습니다.
모든 스트림에 대한 스트림 출력을 지속적으로 수신하고 캡처하는 솔루션은 무엇입니까?
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)
}
}
참고 :
내 요구 사항은 시간에 대한 모든 스트림을 듣고 30 개 민트 말을하는 것입니다 : 모든 스트림의 경우 이미 stream_set_blocking($stream , true);
이 업데이트 했어요. 동시에 나는 2 개의 스트림을들을 수 없다. 5 개의 스트림이있는 경우 내 코드는 time division multiplexing
입니다. 각 개별 스트림은 6 회의 민트에만 기록됩니다.
AJAX가 개별 스트림 및 기록을 독립적으로 요청하는 솔루션이 있습니다. 분명히 더 많은 코드뿐만 아니라 더 많은 CPU를 가져올 것이므로이 다중 AJAX 호출 메서드를 사용하고 싶지는 않습니다.
내 요구 사항은 시간에 대한 모든 스트림을 경청하는 것입니다 30 개 민트을 말한다. 동시에 나는 2 개의 스트림을들을 수 없다. 내가 5 스트림 있다면, 내 코드는 단지 시간 분할 멀티플렉싱, 30 mints 각 개별 스트림은 6 민트에만 기록됩니다 –
나는 당신이 그것을 달성하기 위해 PHP의 여러 인스턴스를 실행해야한다고 생각. –
예 Anze, 여러 개의 독립적 인 ajax 호출을 실행해야합니다. 단일 인스턴스로 PHP에서 병렬 모니터링합니까? –