php-如果执行需要很长时间,则跳转到foreach的下一个成员
我有以下用于检查URL的代码:php-如果执行需要很长时间,则跳转到foreach的下一个成员,php,foreach,php-curl,Php,Foreach,Php Curl,我有以下用于检查URL的代码: function check_url($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $headers = curl_geti
function check_url($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$headers = curl_getinfo($ch);
curl_close($ch);
return $headers['http_code'];
}
和我的阵列:
$urls = array(1,2,3,"AAAA",4,5,6,7,8,9);
(例如AAAA需要200ms,其他需要4s)
这是我的循环
foreach ($urls as $url) {
check_url("http://www.example.com/" . $url);
}
问题是如何为每个成员设置超时?
我的意思是,如果检查成员需要2毫秒以上的时间,请跳到下一个成员。如果您使用的是比5.2.3更新的PHP版本,您可以使用
CURLOPT\u TIMEOUT\u MS
curl选项来执行此操作
因此,本质上:
如果URL超时,返回的HTTP代码将为0。在我的代码中,我将200ms设置为超时,但您可以使用这个数字。当您说“跳转到下一个成员”时,是否确实要跳过/取消耗时较长的一个?或者,您想在继续下一个操作时保持该状态吗?可以将
CURLOPT\u CONNECTTIMEOUT
或CURLOPT\u TIMEOUT
CURLOPT\u TIMEOUT
或CURLOPT\u TIMEOUT\u MS
设置为最大执行时间。因为curl正在等待响应,所以循环时间很长。您可以在check\u url
函数中为curl设置2秒超时。请看详细情况是这样的Patrick。