|
php的默认超时时间是60秒,超时就直接终止。所以需要在合适的地方重置超时时间,比如放在循环里,我是放在url检测函数里面,这样php想执行多久都行。
你5秒扫一个D段,开那么多线程完全不顾服务器的感受啊
function test_url($url) {
set_time_limit(0); //重置超时时间
$stream = ['application/octet-stream', 'application/vnd.apple.mpegurl', 'application/vnd.apple.mpegurl; charset=UTF-8'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOSIGNAL, 1); //解决CURLOPT_TIMEOUT_MS赋值小于1000报错的bug
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 100); //超时时间(毫秒)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //以字符串返回
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //获取响应状态码
$type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); //获取响应内容类型
curl_close($ch);
if ($code == 200 && in_array($type, $stream)) {
$ip = parse_url($url)['host'];
list($a, $b, $c, $d) = explode('.', $ip);
global $hosts; //套用全局变量
array_push($hosts, $ip); //添加到数组中
echo "$d'";
} else { echo "."; }
flush(); //刷新缓冲区内容
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|