当前位置:Gxlcms > PHP教程 > 只为了证明PHP是最好的语言

只为了证明PHP是最好的语言

时间:2021-07-01 10:21:17 帮助过:34人阅读

set_cookie($cookie);$curl->set_gzip(true);$curl->callback = function($response, $info, $request, $error) {    preg_match("#xxxxx#", $request['url'], $out);    $qq = $out[1];     if (empty($response))     {               file_put_contents("./data/error_timeout.log", date("Y-m-d H:i:s") . ' ' . $username.' --- '.json_encode($error)."\n", FILE_APPEND);        // 注意这里不要用 exit,否则整个程序就断开了        return;    }    // 如果是个人信息    if (strpos($request['url'], 'a') ==true )    {     //将信息添加至mongodb,先判断是否是错误信息    }        //如果是来访QQ    if (strpos($request['url'], 'b') == true)    {       //将信息添加至mongodb,先判断是否是错误信息       //从中取出QQ号码存入redis       cache->get_instance()->lpush("qq");//一定要从左端插入,否则是出现死循环,例如A访问来B空间,B同样也访问来A空间,如果在设置网址的时候取先存入的QQ,程序就会不断在A和B之间访问,如果设置网址的时候取最新的则会将他们存入栈底部    }            //如果是说说    if (strpos($request['url'], 'c') == true)    {     ///将信息添加至mongodb,先判断是否是错误信息    }        };while(true){        $qq=cache->get_instance()->lpop("qq");//用从左端删除        if ($qq=="")$qq="12345678";//这里是登录的QQ号码         $url = "http://a".$qq;//个人信息        $curl->get($url);        $url = "http://b".$qq;//来访QQ        $curl->get($url);         $url = "http://c".$qq;//最近说说        $curl->get($url);          $data = $curl->execute();    // 睡眠100毫秒,太快了会被认为是ddos    usleep(100000);}



因为,生产者和消费者没有分开,所以其中有一个问题,就是生产者产生的QQ号码多,消费者使用速度低,所以建议将采集QQ来访者和采集数据分开,采集数据可以多开写进程


用到的类库地址https://github.com/hhqcontinue/zhihuSpider

人气教程排行