2011-05-18 11 views

Respuesta

12

Debería poder influir en esto (como en los envoltorios de URL) con la configuración ini default_socket_timeout.

Prueba cualquiera de colocarlo en el archivo php.ini o haciendo algo como

ini_set('default_socket_timeout', 10); 

para establecer un tiempo de espera de 10 segundos (el valor por defecto es 60)

+0

¡muchas gracias por ese consejo, acabo de probarlo, y funciona! Ahora estoy preocupado de que pueda afectar otras funciones de PHP. ¿Hay alguna manera de simplemente establecer el tiempo de espera en esas 2 funciones, o tal vez controlar por cuánto tiempo se están ejecutando, y luego abortar después de unos segundos? – rob

5

La función get_headers y get_meta_tags utilizar el valor predeterminado HTTP Stream Wrapper debajo. Puede change the ini setting como shown elsewhere on this page o modify the behavior de esa envoltura y establecer un tiempo de espera específica:

stream_context_set_default(
    array(
     'http' => array(
      'timeout' => 5 
     ) 
    ) 
); 

Tenga en cuenta que el cambio de la corriente HTTP Contexto predeterminada se aplicará a todas las funciones de usarlo. Si desea restaurar el tiempo de espera a la configuración predeterminada original, hacer:

$originalDefaults = stream_context_set_default(…); 
$meta = get_meta_tags(…); 
stream_context_set_default($originalDefaults); 

En una nota, si se llama a cualquier función utilizando un HTTP Corriente Envoltura, PHP también se rellenará automáticamente el variable $http_response_header en el ámbito actual, por lo no es necesario que también llame al get_headers, por ej.

$originalDefaults = stream_context_set_default(…); 
$meta = get_meta_tags(…); 
stream_context_set_default($originalDefaults); 
var_dump($http_response_header); 
Cuestiones relacionadas