Как установить время ожидания для get_meta_tags () & get_headers () - PullRequest
9 голосов
/ 19 мая 2011

Я использовал PHP-функции get_meta_tags () и get_headers (), и мне нужно установить значение тайм-аута, если сайт работает медленно или не отвечает.кто нибудь знает как это сделать?

Ответы [ 2 ]

14 голосов
/ 19 мая 2011

Вы должны иметь возможность влиять на это (как это происходит через упаковщики URL) с помощью параметра default_socket_timeout ini.

Попробуйте либо установить его в файле php.ini, либо выполнить что-то вроде

ini_set('default_socket_timeout', 10);

для установки тайм-аута 10 секунд (по умолчанию установлено значение 60)

6 голосов
/ 28 октября 2012

Функции get_headers и get_meta_tags используют по умолчанию HTTP Stream Wrapper внизу. Вы можете изменить настройку ini как , показанную в другом месте на этой странице или , изменить поведение этой оболочки и установить конкретное время ожидания:

stream_context_set_default(
    array(
        'http' => array(
            'timeout' => 5
        )
    )
);

Обратите внимание, что изменение контекста потока HTTP по умолчанию будет применяться ко всем функциям, которые его используют Если вы хотите восстановить тайм-аут к исходным настройкам по умолчанию, выполните:

$originalDefaults = stream_context_set_default( … );
$meta = get_meta_tags( … );
stream_context_set_default($originalDefaults);

В случае sidenote, если вы вызываете какие-либо функции с использованием HTTP Stream Wrapper, PHP также автоматически заполнит переменную $http_response_header в текущей области, поэтому вам не нужно будет вызывать get_headers кроме того, например

$originalDefaults = stream_context_set_default( … );
$meta = get_meta_tags( … );
stream_context_set_default($originalDefaults);
var_dump($http_response_header);
...