求一个同时抓取多个文件的办法.

求一个同时抓取多个文件的办法.,第1张

求一个同时抓取多个文件的办法.,第2张

现在有5台服务器,每台服务器上有一个探针,每个探针执行时间约5秒.
如果挨个抓,就需要25秒.
有什么办法能够同时去抓这5台服务器的探针呢? 把时间缩短到5秒. 已经成功实现了.用了 PHP - spider 框架 的 HttpClient...
感谢大家的帮助... ----------------------- 以下是精选回复-----------------------

答:写缓存
答:并行抓啊,多线程
答:多线程,用python吧,相当简单
答:PHP CURL 并发 就可以了
答:1. 连续5次调用自身文件,每次调用指向不同探针,然后汇总
2. 用curl异步抓取。curl_multi_init()
答:并行抓取不需要多线程, 用stream里的nonblock和select做就可以

或者可以试试这个 https://github.com/hightman/pspider
答:<?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;
?>
答:异步抓或者多线程啊。
答:php 有多进程.

比如:
pcntl_fork();
http://www.php.net/manual/en/function.pcntl-fork.php

另外楼上各种办法基本都可以试试。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 求一个同时抓取多个文件的办法.

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情