Подтвердить что ты не робот

Как установить ограничение времени на get_file_contents в PHP?

Иногда get_file_contents занимает слишком много времени, и это зависает всего script. Есть ли способ установить ограничение времени на get_file_contents, не изменяя максимальное время выполнения script?

Изменить:

Занимает много времени, потому что файл не существует. Я получаю "не удалось открыть поток: HTTP-запрос не удался!" ошибка. Но это длится вечно.

4b9b3361

Ответ 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, а затем восстанавливаете старое значение после него - если это повлияет на некоторые другие части вашего кода...