$url = 'http://a.url/i-know-is-down';
//ini_set('default_socket_timeout', 5);
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 5,
'ignore_errors' => true
)
)
);
$start = microtime(true);
$content = @file_get_contents($url, false, $ctx);
$end = microtime(true);
echo $end - $start, "\n";
Aldığım yanıt genellikle 21.232 saniyedir, yaklaşık beş saniye olmamalıdır ???PHP file_get_contents zaman aşımını dikkate almıyor mu?
Ini_set satırının kaldırılması hiç yardımcı olmuyor.
kullanarak ondan okurken bu okuma zaman aşımı tespit üzerine, ancak, daha fazla kontrol elde yapar Herhangi bir belirgin hata ortaya çıkarsa? –
@ Mahdi.M: 'ingnore_errors' özelliğini kapatamıyorum çünkü bir 404 hatası ile bağlantı sorunları tarafından üretilen bir hata arasında ayrım yapmam gerekiyor. Tekrar ifade edeyim. Ingnore_errors 'kapalıysa ve sunucu 404 $' lık bir içerik döndürürse false olur ve false olursa $ 40 içeriğinin bir 404 hatası mı yoksa bir bağlantı hatası mı olduğunu bilmem gerekir. Hata, @ işlecini bastığımda "file_get_contents (filename)" gibi bir genel olduğunu gösterdi: stream ' – Cesar
açamadı Başarısız bir kural olarak, hiç kullanmanız gerekmemelidir. Uygulamanız için kritik öneme sahipse, büyük olasılıkla yanlış bir şekilde yazıyorsunuz demektir. Her zaman değil ama sık sık lanet olsun! –