2010-03-13 7 views
11

A volte il get_file_contents impiega troppo tempo e questo blocca l'intero script. C'è un modo per impostare un limite di timeout su get_file_contents, senza modificare il tempo massimo di esecuzione dello script?Come posso impostare il limite di tempo su get_file_contents in PHP?

Edit:

La sua assunzione a lungo perché il file non esiste. Sto diventando "impossibile aprire lo stream: richiesta HTTP fallita!" errore. Ma ci vuole per sempre.

risposta

35

Sembra possibile in PHP> 5.2.1 creando un contesto con timeout option.

Leggermente modificato esempio dalla pagina di manuale:

<?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: Mi piace quando le persone suggeriscono di utilizzare i flussi * (che sono una delle grandi cose di PHP che quasi nessuno conosce ;-() * –

+0

grazie ... funziona come un fascino :-) – Jagira

+0

Se il limite di tempo specificato sarà raggiunto la funzione restituirà 'FALSE'? Quindi non sarò in grado di distinguere errori di time out da tutti gli altri? –

1

si contano uso ini_set e impostare "default_socket_timeout" prima di utilizzare file_get_contents e quindi ripristinare il valore precedente dopo che - se interesserebbe alcune altre parti del codice ...

Problemi correlati