采集规则正常而因为网络问题无法获取页面时,强化重试

therock   ·   发表于 2020-3-19   ·   技术交流

当采集服务器偶尔网络不好导致拉取页面失败,系统采集失败自动停止,只能人工重新开始,非常浪费时间。

为了强化采集从而忽略因为偶发网络延时导致的任务失败,修改 /extend/net/gather.php

将 field_content函数里的内容

if (!$html){

        if($test['state']===false){

            return ['error'=>true,'msg'=>'无法获取页面','url'=>$url];

        }else{

            self::echo_msg('无法获取页面:url['.$url.']');

            return false;

        }

    }


修改为

$retrytimes=10;

while (!$html){

    $retrytimes--;

    if ($retrytimes>0){            //获取失败重新尝试

        sleep(3);

        $html=self::get_html($url,$info['charset'],$info['url_complete']);

    }else{

        if($test['state']===false){

            return ['error'=>true,'msg'=>'无法获取页面','url'=>$url];

        }else{

            self::echo_msg('无法获取页面:url['.$url.']');

            return false;

        }

    }

}


1 条回复   |  直到 2020-3-20 | 611 次浏览

myoppo
发表于 2020-3-20

如果只针对网络原因,的确是一个好方法。

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容