我正在處理大量通過SOAP連接處理大量數據的PHP腳本。如果腳本沒有遇到任何錯誤,則估計腳本的總運行時間爲幾天。我遇到的問題是腳本將運行一段時間,從一個小時到一天,然後SOAP連接將死亡,並顯示錯誤"error fetching http headers"
。php肥皂錯誤獲取http標題
我見過很多文章建議增加default_socket_timeout設置,我試過這個。它沒有幫助。我知道這是行得通的,因爲它在失敗之前至少會有一百次成功的通話。有什麼我可以做的,以阻止這個錯誤?
更新
我打印出希望在那裏看到錯誤的請求和響應標頭。但現在看來,他們都很好:
HTTP/1.1 200 OK
日期:星期三,2013年9月25日21點零零分12秒GMT
服務器:Apache/2.2.15(CentOS的)
X-供電-By:PHP/5.3.3
Content-Length:516
Connection:close
Content-Type:text/xml;字符集= UTF-8
儘可能示例代碼變爲實際的腳本是瘋狂的長,但基本前提是:
ini_set('default_socket_timeout', 120);
$client = new SoapClient($wsdl,array(
'trace' =>true,
'connection_timeout' => 500000,
'cache_wsdl' => WSDL_CACHE_BOTH,
'keep_alive' => true,
));
while(!$finished) {
$finished = $client->someSoapFunction($data);
}
someSoapFunction()
將返回有效的數據連接的100,然後隨機回到我上面的錯誤。運行的時間少於設置的超時時間。我沒有在我的PHP或Apache錯誤日誌中的錯誤。我很難過。
問題 - 幷包含有效的代碼來重現它 - 在問題本身中。 – Kermit