Я работаю над PHP-скриптом, который обрабатывает много данных через SOAP-соединение. Оценки общего времени выполнения сценария выглядят как несколько дней, если он не встречает никаких ошибок. Проблема, с которой я столкнулся, заключается в том, что скрипт будет работать некоторое время, от часа до дня, а затем соединение SOAP будет умирать с ошибкой "error fetching http headers"
.php soap error fetching http headers
Я видел много статей, предлагающих увеличить значение default_socket_timeout, и я пробовал это. Это не помогло. Я знаю, что он работает, потому что он делает по меньшей мере сто успешных вызовов, прежде чем он потерпит неудачу. Есть ли что-нибудь, что я могу сделать, чтобы остановить эту ошибку?
Update
Я распечатал заголовки запроса и ответа в надежде увидеть ошибку там. Но, похоже, они прекрасны:
HTTP/1.1 200 OK
Дата: Ср, 25 сентября 2013 21:00:12 GMT
Сервер: Apache/2.2.15 (CentOS)
X-Powered -By: PHP/5.3.3
Контент-длина: 516
Подключение: закрытие
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