首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

php curl 多线程抓取数据会判断分别来自哪个url吗

2013-06-19 
php curl 多线程抓取数据能判断分别来自哪个url吗? $mh curl_multi_init() // 开启多线程$i 0foreac

php curl 多线程抓取数据能判断分别来自哪个url吗?

 $mh = curl_multi_init(); // 开启多线程

    $i = 0;
    foreach($url_array as $url) {
        $ch = curl_init();
    if (IS_PROXY) {
curl_setopt ($ch, CURLOPT_PROXY,'67.215.228.129:8089' );//60.12.226.18

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return don't print
        curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 302 redirect
        curl_setopt($ch, CURLOPT_MAXREDIRS, 7); //HTTp定向级别
        curl_multi_add_handle($mh, $ch); // 把 curl resource 放进 multi curl handler 里
        $handle[$i++] = $ch;
    }


代码如上,开启多线程抓取数据;假如我一次加入10个url,返回给我的是一个有10个结果的数组。我不能判断这些数据分别是来自哪个url的。
请问有什么办法,还是其他哪种语言能实现,多线程抓取的数据还知道来自哪个url的。
[解决办法]
你 curl_getinfo($handle[$i]) 就可准确的获得每个 curl 的详细信息
大致是这样的一些(你也可以只读取你感兴趣的部分)
    [url] => http://blog.51edm.org/content/uploadfile/201303/dc7f1364286796.zip
    [content_type] => application/zip
    [http_code] => 206
    [header_size] => 313
    [request_size] => 221
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.047
    [namelookup_time] => 0
    [connect_time] => 0.047
    [pretransfer_time] => 0.047
    [size_upload] => 0
    [size_download] => 201
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => 201
    [upload_content_length] => 0
    [starttransfer_time] => 0.078
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [primary_ip] => 119.37.197.49
    [primary_port] => 80


    [local_ip] => 114.106.252.117
    [local_port] => 2128
    [redirect_url] => 



你还可以用 CURLOPT_FILE 设置每个 curl 的输出文件,让其自动写盘,而无需让读取的数据占用 php 的内存(虽然是短时的)

[解决办法]


感觉多线程比单线程没想象中快很多,但是cpu使用率高了很多倍。不知有没有什么地方可以优化的?

热点排行