我一直在使用get_meta_tags()& get_headers()PHP函数,如果网站运行缓慢或无响应,需要设置超时值。有谁知道怎么做?
答案 0 :(得分:14)
您应该能够使用default_socket_timeout
ini设置来影响这一点(因为它是通过URL包装器)。
尝试在php.ini
文件中设置或通过执行类似
ini_set('default_socket_timeout', 10);
设置10秒超时(默认值为60)
答案 1 :(得分:6)
get_headers
和get_meta_tags
函数使用下面的默认HTTP Stream Wrapper。您可以change the ini setting作为该包装的shown elsewhere on this page或modify 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;