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