6
我現在有一個用PHP編寫的一個服務器守護程序它接收並使用stream_socket_*
功能和投票活動流使用stream_select()
爲他們創建網絡流。我希望能夠(使用string_filter_append()
)zlib的一個過濾器添加到任意流,但是當我做,我得到一個錯誤,告訴我,stream_select()
不能使用輪詢過濾的流。如何將PHP的stream_select()與zlib過濾器一起使用?
我怎樣才能繞過這個限制?
謝謝你,這種方法似乎讓我來規避限制,但是我使用「zlib.deflate」,我不是複製流來流,而是隻用fwrite()將發送服務器 - 通過出站網絡流生成數據。使用這種方法,stream_get_contents($ out)返回2字節的zlib頭,沒有別的。如果我將相同的數據寫入文件,而不是寫入$ in並讀取$ out,則會完全寫入壓縮的$數據。有沒有關於這種方法會阻止從$ out讀取完整的壓縮數據? – drrcknlsn
只有在寫入了一定數量的數據後,過濾器纔可以寫入流;嘗試寫更多的數據。也可以使用STREAM_FILTER_WRITE VS在寫入側的zlib.deflate過濾器和STREAM_FILTER_READ在讀取側嘗試使用。 – arnaud576875