如何为get_meta_tags()和get_headers()设置超时

rob*_*rob 9 php timeout get-headers

我一直在使用get_meta_tags()和get_headers()PHP函数,并且需要在网站缓慢或无响应的情况下设置超时值.有谁知道怎么做?

Jam*_*s C 14

你应该能够通过default_socket_timeoutini设置来影响这个(因为它是通过URL包装器).

尝试在php.ini文件中设置它或者做类似的事情

ini_set('default_socket_timeout', 10);
Run Code Online (Sandbox Code Playgroud)

设置10秒超时(默认值为60)


Gor*_*don 6

get_headersget_meta_tags功能使用默认的HTTP流包装下方.您可以更改INI设置这个页面上的其他地方显示修改其行为是包装的并设置特定的超时:

stream_context_set_default(
    array(
        'http' => array(
            'timeout' => 5
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

请注意,更改默认HTTP流上下文将适用于使用它的所有函数.如果要将超时恢复为原始默认设置,请执行以下操作:

$originalDefaults = stream_context_set_default( … );
$meta = get_meta_tags( … );
stream_context_set_default($originalDefaults);
Run Code Online (Sandbox Code Playgroud)

在旁注中,如果使用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);
Run Code Online (Sandbox Code Playgroud)