Ben bir posta kodu arama hizmeti var ve ben olası aşımları veya aşağı olan sunucuya endişeleniyorum.
Ben ilk istek 20-25s sonra herhangi bir HTTP Response almazsam ben başarısız simgeleyen bir JSON yanıt isterim:
({ success:0 })
Sen file_get_contents() de kullanarak stream_context_create() için zaman aşımını (ve diğer seçenekleri bir sürü) ayarlayabilirsiniz. Seçenekler listesi için here bakın.
Kılavuzun değiştirilmiş örnek:
<?php
$opts = array(
'http'=>array(
'timeout' => 25,
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
/* Sends an http request to www.example.com
with additional headers shown above */
$contents = file_get_contents("http://example.com", false, $context);
?>
Bu sizin için çalışıyorsa, ben bu aşkın cURL kullanarak karşı konuşan bir şey görmüyorum.
Sizin başlığı ve soru metin iki farklı sorgularlar. Hem cURL ve file_get_contents belirli bir getiri ile bir zaman aşımı kullanabilirsiniz.
Eğer cURL kullanıyorsanız, curl_setopt($ch, CURLOPT_TIMEOUT, 25) //for 25s kullanarak zaman aşımı süresini ayarlayabilirsiniz.
Eğer context bunu eklemek zorunda file_get_contents için zaman aşımını ayarlamak için.
$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>"25",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
? Izle, cURL aksine, (opsiyon default_socket_timeout bulunan) bir varsayılan zaman aşımı olduğunu ancak unutmayın.
CURL ve file_get_contents Hem böylece bir başarısızlık yakalamak kolaydır, FALSE, başarısız bir transfer dönün.