Как установить ограничение времени на get_file_contents в PHP?
Иногда get_file_contents занимает слишком много времени, и это зависает всего script. Есть ли способ установить ограничение времени на get_file_contents, не изменяя максимальное время выполнения script?
Изменить:
Занимает много времени, потому что файл не существует. Я получаю "не удалось открыть поток: HTTP-запрос не удался!" ошибка. Но это длится вечно.
Ответы
Ответ 1
Кажется, что это возможно в PHP > 5.2.1, создав контекст с опцией timeout.
Немного исправленный пример на странице руководства:
<?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);
?>
Ответ 2
вы используете ini_set
и устанавливаете "default_socket_timeout"
перед использованием file_get_contents
, а затем восстанавливаете старое значение после него - если это повлияет на некоторые другие части вашего кода...