2010-03-13 20 views
11

En ocasiones get_file_contents toma demasiado tiempo y eso bloquea toda la secuencia de comandos. ¿Hay alguna manera de establecer un límite de tiempo de espera en get_file_contents, sin modificar el tiempo máximo de ejecución del script?¿Cómo puedo establecer un límite de tiempo en get_file_contents en PHP?

Editar:

su toma mucho tiempo porque no existe el archivo. Me estoy "cerrando la transmisión: ¡Falló la solicitud HTTP!" error. Pero lleva una eternidad.

Respuesta

35

Parece posible en PHP> 5.2.1 creando un contexto con el timeout option.

ejemplo modificado ligeramente desde la página del manual:

<?php 

$opts = array('http' => 
    array(
     'method' => 'GET', 
     'timeout' => 120 
    ) 
); 

$context = stream_context_create($opts); 

$result = file_get_contents('http://example.com/get.php', false, $context); 

?> 
+1

+1: Me encanta cuando la gente sugiere usar streams * (que son una de las cosas geniales de PHP que casi nadie conoce ;-() * –

+0

gracias ... funciona como un encanto :-) – Jagira

+0

If se alcanzará el límite de tiempo especificado, la función devolverá 'FALSE'? ¿Entonces no podré distinguir el error de tiempo de espera de todos los demás? –

1

se cuentan el uso ini_set y establecer "default_socket_timeout" antes de usar file_get_contents y luego restaurar el valor anterior después de que - si afectaría a algunas otras partes de su código ...

Cuestiones relacionadas