如何设置get_meta_tags()&的超时get_headers()

时间:2011-05-18 20:05:57

标签: php timeout get-headers

我一直在使用get_meta_tags()& get_headers()PHP函数,如果网站运行缓慢或无响应,需要设置超时值。有谁知道怎么做?

4 个答案:

答案 0 :(得分:14)

您应该能够使用default_socket_timeout ini设置来影响这一点(因为它是通过URL包装器)。

尝试在php.ini文件中设置或通过执行类似

的操作
ini_set('default_socket_timeout', 10);

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

答案 1 :(得分:6)

get_headersget_meta_tags函数使用下面的默认HTTP Stream Wrapper。您可以change the ini setting作为该包装的shown elsewhere on this pagemodify the behavior并设置特定的超时:

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

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

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

在旁注中,如果使用HTTP Stream Wrapper调用任何函数,PHP也会自动填充当前作用域中的variable $http_response_header,因此您不必另外调用get_headers,例如

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

答案 2 :(得分:0)

使用@Gordon的get_headers命令执行此操作,但是print(type(num1)) print(type(num2)) print(type(lower_limit)) phi_1 = sp.integrate.quad(integrand, lower_limit, num1) phi_2 = sp.integrate.quad(integrand, lower_limit, num2) <class 'numpy.matrixlib.defmatrix.matrix'> <class 'numpy.matrixlib.defmatrix.matrix'> <class 'float'> 返回stream_context_set_default而不是数组,因此我不确定应该如何将其反馈回相同的函数。它期望一个数组。

ressource

在php 7.1中,向$originalDefaults = stream_context_set_default( … ); $meta = get_meta_tags( … ); stream_context_set_default($originalDefaults); var_dump($http_response_header); 添加了第三个参数。所以我想到了这个。在未过时的PHP版本上,该选项仅添加到get标头调用中,否则默认值将保留脚本的其余部分执行,直到有人向我解释如何在较旧的php版本上执行该操作为止。

get_headers

答案 3 :(得分:0)

@redanimalwar,如何获取默认选项并将其设置回上下文,像这样:

    $opts['http']['timeout'] = 2;

    $headers = null;
    if (version_compare(PHP_VERSION, '7.1.0', '>=')) {
        $context = stream_context_create($opts);
        $headers =  @get_headers($url, 0, $context);
    } else {
        $defaultOptions = stream_context_get_options(stream_context_get_default());
        stream_context_set_default($opts);
        $headers = @get_headers($url);
        stream_context_set_default($defaultOptions);
    }

    return $headers;