私は現在、PHPで書かれたサーバーデーモンを持っています。これは、受信接続を受け入れ、stream_socket_*
関数を使用してネットワークストリームを作成し、stream_select()
を使用してアクティブなストリームをポーリングします。任意のストリームにzlibフィルタ(string_filter_append()
を使用)を追加できるようにしたいのですが、そうすると、stream_select()
をフィルタリングされたストリームをポーリングするために使用できないというエラーが表示されます。zlibフィルタでPHPのstream_select()を使用するにはどうすればよいですか?
この制限を回避するにはどうすればよいですか?
ありがとう、私は "zlib.deflate"を使用していますが、ストリームをストリームにコピーするのではなく、単にfwrite()を使用してサーバーを送信するという制限を回避できますアウトバウンドネットワークストリームを介して生成されたデータ。このメソッドを使用すると、stream_get_contents($ out)は2バイトのzlibヘッダーを返します。同じデータをファイルに書き込むと、$ inに書き込み、$ outを読み込むのではなく、圧縮された$データが完全に書き込まれます。 $ outから完全な圧縮データを読み取ることができないような方法がありますか? – drrcknlsn
フィルタは、ある量のデータが書き込まれた後にのみストリームに書き込むことができます。より多くのデータを書き込んでみてください。また、書き込み側のzlib.deflateフィルタをSTREAM_FILTER_WRITE VSと読み込み側でSTREAM_FILTER_READで試してください。 – arnaud576875