我想分析一個Git打包文件的PHP中的zlib。 (有關格式here和here的詳細信息)。正如那些文章中提到的那樣,問題是packfile中沒有爲壓縮數據指定長度,這意味着您必須將其放入zlib中並使用zlib來確定數據的啓動和停止位置。儘管zlib的本地C API提供了在達到壓縮數據結束時返回的常量Z_STREAM_END
,但PHP的zlib擴展沒有提供這樣的選項。 我的唯一的選擇似乎是一個字節一次添加到所述輸入數據流和檢查編輯:PHP重置值total_in
(zlib的流struct
的一部分)是否爲0,其中,根據所述PHP和zlib源代碼,復位到零每當inflate()
返回Z_STREAM_END
。total_in
值,而不是zlib。這在我的答案中鏈接的拉取請求中發生了變化。從內部結構得到的值代表情境資源
的問題是,如何獲取的total_in
價值? PHP的inflate_init()
函數返回解壓「上下文資源」,它從我的源代碼細讀表示struct
zlib的使用。
在純PHP中,是否可以使用上下文資源從內部struct
中獲取total_in
的值?
謝謝。
編輯:基本上,我希望能夠在zlib.inflate環境中使用stream_context_get_options(),但我可以,因爲我得到Invalid stream/context parameter
沒有。