亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP file_get_contents 為 HTTP 請求返回不一致的部分數據

PHP file_get_contents 為 HTTP 請求返回不一致的部分數據

PHP
侃侃無極 2023-03-04 10:50:09
我正在嘗試使用 PHP SoapClient 來執行對第三方應用程序的請求。當我創建 SoapClient 對象時,我收到有關 WSDL 數據過早結束的錯誤。在嘗試診斷錯誤時,我發現 WSDL URI 的 file_get_contents() 沒有返回整個 XML。事實上,它經常返回不同數量的 WSDL。這是我的測試程序:$xml = file_get_contents('https://webservices3.autotask.net/atservices/1.6/atws.wsdl');echo $xml . "\n";echo strlen($xml). "\n";我每次得到大約 57k 字節(195628 是正確的值),有時更多而且很少我得到整個 XML。我認為這是一個 PHP 問題,因為為該 URI 每次調用 curl 或 wget 100 次的 shell 循環將在 100% 的時間內返回整個文件。我使用的是 PHP 5.4.16,我知道它很舊(2013 年),但是這個過程工作了大約一個月,然后就完全停止了。我試過更改超時、HTTP 協議版本、PHP 內存設置,但我不明白為什么 file_get_contents 會這樣。任何建議表示贊賞。卷曲測試:for a in $( seq 1 100 ); do curl -o wsdl.$a https://webservices3.autotask.net/atservices/1.6/atws.wsdl; done測試:for a in $( seq 1 100 ); do wget -O wsdl.$a https://webservices3.autotask.net/atservices/1.6/atws.wsdl; done更新 1:將 maxlen 設置為一些愚蠢的大數不會影響行為:$xml = file_get_contents('https://webservices3.autotask.net/atservices/1.6/atws.wsdl', false, null, 0, 999999);echo $xml . "\n";echo strlen($xml). "\n";更新 2:$ curl -s -D /dev/stderr -- https://webservices3.autotask.net/atservices/1.6/atws.wsdl > /dev/nullHTTP/1.1 200 OKContent-Type: text/xmlLast-Modified: Wed, 29 Apr 2020 14:38:25 GMTAccept-Ranges: bytesETag: "39163cd7331ed61:0"Server: Microsoft-IIS/8.5X-Powered-By: ASP.NETContent-Security-Policy: default-src 'self' https: *;script-src 'self' 'unsafe-inline' 'unsafe-eval' https: *;style-src 'self' 'unsafe-inline';img-src 'self' https://walkme.psa.datto.com/Images/ data: https://www.datto.com/img/Date: Fri, 08 May 2020 15:22:28 GMTContent-Length: 195628
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

webservices3.autotask.net 的響應標頭錯誤


HTTP/1.1 200 OK

Content-Type: text/xml

Accept-Ranges: bytes

Server: Microsoft-IIS/8.5

X-Powered-By: ASP.NET

Cteonnt-Length: 195628

Cache-Control: private

Content-Encoding: gzip

Transfer-Encoding: chunked

注意:Cteonnt-Length: 195628應該是Content-Length: 195628


那為什么file_get_contents不能正確處理請求。


所以,修復響應或設置maxlen


查看完整回答
反對 回復 2023-03-04
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

這似乎是 PHP 中的錯誤。問題末尾有鏈接的錯誤報告。


查看完整回答
反對 回復 2023-03-04
  • 2 回答
  • 0 關注
  • 266 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號