我现在正在做采集方面程序用的是php的curl函数库现在就是采集太慢了,看到好多cs程序都可以做多线程采集,不知道用php如何实现,请人指点一下原理,谢谢

解决方案 »

  1.   

    curl不是有一系列curl_multi的处理吗,为啥不试下。$connomains = array(
    "http://www.baidu.com/",
    "http://www.google.com/",
    "http://www.yahoo.com/"
    );$mh = curl_multi_init();foreach ($connomains as $i => $url) {
         $conn[$i]=curl_init($url);
          curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);
          curl_multi_add_handle ($mh,$conn[$i]);
    }do { curl_multi_exec($mh,$active); } while ($active);foreach ($connomains as $i => $url) {
          $res[$i]=curl_multi_getcontent($conn[$i]);
          curl_close($conn[$i]);
    }print_r($res);
      

  2.   

    建议用python做,抓取和处理,可以看作生产消费问题,在python的文档里有生产消费问题的example。php本身不支持多线程,但是有多线程的模拟,做的不是太好,多进程是可以的,但是不适合解决你的问题。
    也可以考虑单进程单线程异步IO,不妨试试php的libevent。
      

  3.   

    呵呵,php无法多线程,那些所谓的模拟只是利用了apache的多线程机制.