|  |      1tension      2013-06-08 14:36:31 +08:00 写缓存 | 
|  |      2qiuai OP PRO @tension 每台服务器上都有缓存.但是是要激活才会有.总不能为了个不知道什么时候会看一次的信息列表去每分钟执行一次缓存吧... | 
|  |      3swulling      2013-06-08 14:41:46 +08:00 并行抓啊,多线程 | 
|  |      4likexian      2013-06-08 14:42:29 +08:00 多线程,用python吧,相当简单 | 
|      6blacked      2013-06-08 15:14:40 +08:00 PHP CURL 并发 就可以了 | 
|  |      7txlty      2013-06-08 15:16:16 +08:00 1. 连续5次调用自身文件,每次调用指向不同探针,然后汇总 2. 用curl异步抓取。curl_multi_init() | 
|  |      9lyjyiran      2013-06-08 15:37:56 +08:00 | 
|  |      11txlty      2013-06-08 16:43:00 +08:00 <?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; ?> | 
|  |      12alsotang      2013-06-08 17:03:30 +08:00 异步抓或者多线程啊。 | 
|  |      14fmfsaisai      2013-06-08 18:22:01 +08:00 @qiuai 忍不住吐个槽,人家好心连代码都帮你实现了,你好歹认真读一下人家的代码吧 usleep(10000);你可以去看看手册usleep这个函数是干什么用的 直接上来一句就“一万次”....真是让人感觉无力。。。 | 
|  |      15qiuai OP PRO | 
|  |      16darasion      2013-06-08 18:25:21 +08:00 | 
|  |      18fmfsaisai      2013-06-08 18:30:37 +08:00 @qiuai 这段代码对于你的需求来说应该还是有点问题的,如果还没发现,建议可以修改一下usleep的数值,比如改成0; | 
|  |      19qiuai OP PRO @fmfsaisai 执行以后出现了一些多余的数字.-1-1-1-1-1-1-1-1-1-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-100-100000-100-10 | 
|  |      21fmfsaisai      2013-06-08 18:37:17 +08:00 @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就是减少阻塞时间,对结果没有任何影响。 | 
|  |      227sj525bL0Wy7FOx9      2013-06-08 18:46:02 +08:00 @qiuai 伸手党啊,多看看代码内容,自己测试下是哪里出的数字,再去看是哪个函数,再看看这个函数是什么用途,返回值等等,而不是等着别人回答啊亲,要自己多分析。 |