6
현재 PHP로 작성된 서버 데몬은 들어오는 연결을 허용하고 stream_socket_*
함수를 사용하여 네트워크 스트림을 만들고 stream_select()
을 사용하여 활성 스트림을 폴링합니다. 임의의 스트림에 zlib 필터 (string_filter_append()
사용)를 추가 할 수 있기를 원하지만, 할 때 필터링 된 스트림을 폴링하는 데는 stream_select()
을 사용할 수 없다는 오류가 발생합니다.PHP의 stream_select()를 zlib 필터와 함께 사용하려면 어떻게해야합니까?
이 제한 사항을 어떻게 해결할 수 있습니까?
감사합니다.이 메서드는 제한을 피할 수 있지만 "zlib.deflate"를 사용하고 stream-to-stream을 복사하지 않고 fwrite()를 사용하여 서버를 보냅니다. 아웃 바운드 네트워크 스트림을 통해 생성 된 데이터 이 메서드를 사용하면 stream_get_contents ($ out)는 2 바이트 zlib 헤더 만 반환하고 그 외에는 아무것도 반환하지 않습니다. $ in에 쓰고 $ out을 읽는 대신 파일에 같은 데이터를 쓰면 압축 된 $ 데이터가 완전히 쓰여집니다. $ out에서 전체 압축 된 데이터를 읽지 못하게하는이 방법에 대한 것이 있습니까? – drrcknlsn
필터는 일정량의 데이터가 기록 된 후에 만 스트림에 기록 할 수 있습니다. 더 많은 데이터를 작성하십시오. 또한 쓰기 측의 zlib.deflate 필터를 STREAM_FILTER_WRITE VS과 함께 읽기 측에서 STREAM_FILTER_READ로 시도해보십시오. – arnaud576875