$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";
phản hồi tôi nhận được thường là 21,232 segs, không nên là khoảng năm giây ???PHP file_get_contents bỏ qua thời gian chờ?
Bỏ ghi chú dòng ini_set không giúp gì cả.
Bạn có thể thử tắt cả "ignore_errors" cờ cũng như @file_get_contents im lặng() gọi và xem nếu có bất kỳ lỗi rõ ràng bật ra? –
@ Mahdi.M: Tôi không thể tắt 'ingnore_errors' vì tôi cần phân biệt giữa lỗi 404 và lỗi do các sự cố kết nối tạo ra. Hãy để tôi rephrase nó. Nếu ingnore_errors' bị tắt và máy chủ trả lại nội dung 404 $ sẽ là sai và tôi cần biết liệu nội dung $ nếu sai do lỗi 404 hoặc beacuse lỗi kết nối. Lỗi hiển thị khi tôi chặn toán tử @ là một toán tử chung như 'file_get_contents (tên tệp): không mở được luồng ' – Cesar
Theo quy tắc chung, bạn không bao giờ cần sử dụng @. Nếu nó quan trọng đối với ứng dụng của bạn, bạn có thể viết nó theo cách sai. Không phải lúc nào, nhưng khá là thường xuyên! –