本帖最后由 oasisxp 于 2014-08-25 13:45:08 编辑

解决方案 »

  1.   

    本帖最后由 PhpNewnew 于 2014-08-27 22:09:20 编辑
      

  2.   

    应该是xiami.com服务器有限制,禁止采集吧1,每个url请求只采10-20打,然后做个跳转在继续采集,这样也可以防止页面超时,如果你在虚机上运行,长时间点用cpu,进程可能会被kill.2,每次url请求header中的user-agent,cookies,最好都能改一下。3,如果还不行,用火车头试试吧!4,如果火车也不行,那就放弃这个站吧!
      

  3.   

    把foreach拆分成循环执行同一页面。
    第一次浏览器或者cronrab定时执行  http://localhost/caiji.php?num=1  每次完成后,$_GET['num']+1;curl 重复l执行同一脚本,当$_GET['num']==1000后,退出,不再执行curl。if($_GET['num']){
    $url = 'http://www.xiami.com/song/'.$_GET['num'];
    //你的代码
    $_GET['num'])++;
    }
    if($_GET['num']<1001){
            $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"http://localhost/caiji.php?num=".$_GET['num']));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,2); 
    curl_setopt($ch, CURLOPT_TIMEOUT ,2);
    curl_exec($ch);
    curl_close($ch);
    }else{
       exit;
    }