error de php soap obteniendo encabezados http

Estoy trabajando en un script PHP que está procesando una gran cantidad de datos a través de una conexión SOAP. Las estimaciones del tiempo de ejecución total del script parecen ser de varios días si no encuentra ningún error. El problema al que me estoy enfrentando es que el script se ejecutará por un tiempo, desde una hora hasta un día, y luego la conexión SOAP morirá con el error "error fetching http headers" .

He visto muchos artículos que sugieren boost la configuración de default_socket_timeout y lo he intentado. No ha ayudado. Sé que está funcionando porque hace al menos cien llamadas exitosas antes de que falle. ¿Hay algo que pueda hacer para detener este error?

Actualizar
Imprimí los encabezados de solicitud y respuesta con la esperanza de ver un error allí. Pero parece que están bien:

HTTP / 1.1 200 OK
Fecha: mié, 25 sep. 2013 21:00:12 GMT
Servidor: Apache / 2.2.15 (CentOS)
X-Powered-By: PHP / 5.3.3
Longitud del contenido: 516
Conexión: cerrar
Tipo de contenido: text / xml; charset = UTF-8

en lo que respecta al código de ejemplo, el guión real es loco, pero la premisa básica es esta:

 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() devolverá datos válidos para 100 conexiones y luego me devolverá aleatoriamente el error anterior. El tiempo de ejecución es menor que cualquiera de los tiempos de espera establecidos. No recibo errores en mis registros de errores de php o apache. Estoy perplejo.

Sé que es una vieja pregunta, pero tal vez mi solución puede ser útil para otros. Tuve el mismo problema y al cambiar el parámetro ‘keep_alive’ a falso en la creación del objeto SoapClient, mi problema se resolvió:

 $client = new SoapClient($wsdl,array( 'trace' =>true, 'connection_timeout' => 500000, 'cache_wsdl' => WSDL_CACHE_BOTH, 'keep_alive' => false, ));