Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-如果执行需要很长时间,则跳转到foreach的下一个成员_Php_Foreach_Php Curl - Fatal编程技术网

php-如果执行需要很长时间,则跳转到foreach的下一个成员

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

我有以下用于检查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_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。