1
tension 2013 年 6 月 8 日
写缓存
|
3
swulling 2013 年 6 月 8 日
并行抓啊,多线程
|
4
likexian 2013 年 6 月 8 日
多线程,用python吧,相当简单
|
6
blacked 2013 年 6 月 8 日
PHP CURL 并发 就可以了
|
7
txlty 2013 年 6 月 8 日
1. 连续5次调用自身文件,每次调用指向不同探针,然后汇总
2. 用curl异步抓取。curl_multi_init() |
9
lyjyiran 2013 年 6 月 8 日
|
11
txlty 2013 年 6 月 8 日
<?php
$t=array();$ch=array(); $t[]='http://www.baidu.com'; //探针1 $t[]='http://www.sogou.com'; //探针2 $t[]='http://www.yodao.com'; //探针3 $t[]='http://www.baidu.com'; //探针4 $t[]='http://www.sogou.com'; //探针5 for($i=0;$i<5;$i++){ $ch[$i] = curl_init(); curl_setopt($ch[$i], CURLOPT_URL, $t[$i]); curl_setopt($ch[$i], CURLOPT_HEADER, 0); curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 0); } $mh = curl_multi_init(); for($i=0;$i<5;$i++){ curl_multi_add_handle($mh,$ch[$i]); } $running=null; do { usleep(10000); $result.= curl_multi_exec($mh,$running); } while ($running > 0); echo $result; ?> |
12
alsotang 2013 年 6 月 8 日
异步抓或者多线程啊。
|
14
fmfsaisai 2013 年 6 月 8 日
@qiuai 忍不住吐个槽,人家好心连代码都帮你实现了,你好歹认真读一下人家的代码吧
usleep(10000);你可以去看看手册usleep这个函数是干什么用的 直接上来一句就“一万次”....真是让人感觉无力。。。 |
15
qiuai OP PRO |
16
darasion 2013 年 6 月 8 日
|
19
qiuai OP PRO @fmfsaisai 执行以后出现了一些多余的数字.-1-1-1-1-1-1-1-1-1-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-100-100000-100-10
|
21
fmfsaisai 2013 年 6 月 8 日
@qiuai
建议你先读读官方手册,result返回的只是一个状态码 http://php.net/manual/en/function.curl-multi-exec.php 如果想要获取返回的结果,(在所有exec执行完毕以后)要用 http://www.php.net/manual/en/function.curl-multi-getcontent.php 参数就用代码里循环的那个$ch[$i] for($i=0;$i<5;$i++){ echo curl_multi_getcontent($ch[$i]); } usleep改成0就是减少阻塞时间,对结果没有任何影响。 |
22
7sj525bL0Wy7FOx9 2013 年 6 月 8 日
@qiuai 伸手党啊,多看看代码内容,自己测试下是哪里出的数字,再去看是哪个函数,再看看这个函数是什么用途,返回值等等,而不是等着别人回答啊亲,要自己多分析。
|