PHP新手关于采集的问题 现在在一个页面上进行for($u=1;$u<40;$u++){ 这样子去循环采集 如果采集非常慢 循环次数特别多 那么会造成超时现象吗?一般采集是个什么思路 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 肯定会超时的,采集的时候分阶段采集吧,然后set_time_out()函数把服务器响应时间设置的长些,以保证信息能有足够的时间采集完 像你这种情况应该使用多线程采集 ,给你个多线程采集的functionfunction newfuc($doctorz) { $mh = curl_multi_init(); foreach ($doctorz as $j => $uri) { $conn[$j] = curl_init($uri); curl_setopt($conn[$j], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"); curl_setopt($conn[$j], CURLOPT_HEADER ,0); curl_setopt($conn[$j], CURLOPT_CONNECTTIMEOUT,60); curl_setopt($conn[$j],CURLOPT_RETURNTRANSFER,true); // 设置不将爬取代码写到浏览器,而是转化为字符串curl_multi_add_handle ($mh,$conn[$j]); } do { curl_multi_exec($mh,$active); } while ($active);foreach ($doctorz as $j => $uri) { $data[$j]= curl_multi_getcontent($conn[$j]); // 获得爬取的代码字符串 //echo $data[$j];//注意各个数据源源码的编码必须一致}return $data;}先把要采集的网址装入数组,然后再放到函数里 好吧,我給你一个简单的不会超时的思路吧假如你的采集工作都是在a.php里完成的,那么a.php的代码条例应该如下:1.$id=獲取傳遞過來的id值,如果獲取不到,則id值為02.从数据库里按照id正序方式取得一條id大於$id的網址数据出來采集3.实施采集工作4.采集完成之后把采集到的内容存入数据库.5.让$id的值加16.延时更新自身页面,并传递参数,可以用下边两种方法任選其一window.setTimeout(function(){location.href='a.php?id=<?PHP echo $id;?>'},1000);//只延迟1秒,不循环<meta HTTP-EQUIV=REFRESH CONTENT='60; URL=a.php?id=<?PHP echo $id;?>'>这样的思路写出来的采集,不管你要采集多少条数据,绝对永不超时. 太平洋网站,左右浮动的代码,5秒后自动缩回是怎么弄的? $this->db->insert_id 关于visa付款 php怎么提取域名的根部分 [推荐] 网络最强PHP开发工具+电子书+视频教程等资料下载汇总 zend optimizer 有没有HP UNIX 的版本 紧急:::有人看到了,帮看下 我的需求是帝国和thinksns通过ucenter整合 难点要求: phpStudy (php环境集成包) +JspStudy (JSP环境集成包) 求测试 请教大侠,Memcache的问题 PHP中一个非常奇怪的问题 IE9打不开php页面,大神请帮忙
function newfuc($doctorz)
{
$mh = curl_multi_init();
foreach ($doctorz as $j => $uri) {
$conn[$j] = curl_init($uri);
curl_setopt($conn[$j], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$j], CURLOPT_HEADER ,0);
curl_setopt($conn[$j], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$j],CURLOPT_RETURNTRANSFER,true); // 设置不将爬取代码写到浏览器,而是转化为字符串
curl_multi_add_handle ($mh,$conn[$j]);
}
do {
curl_multi_exec($mh,$active);
} while ($active);foreach ($doctorz as $j => $uri) {
$data[$j]= curl_multi_getcontent($conn[$j]); // 获得爬取的代码字符串
//echo $data[$j];
//注意各个数据源源码的编码必须一致
}
return $data;
}
先把要采集的网址装入数组,然后再放到函数里
2.从数据库里按照id正序方式取得一條id大於$id的網址数据出來采集
3.实施采集工作
4.采集完成之后把采集到的内容存入数据库.
5.让$id的值加1
6.延时更新自身页面,并传递参数,可以用下边两种方法任選其一
window.setTimeout(function(){location.href='a.php?id=<?PHP echo $id;?>'},1000);//只延迟1秒,不循环
<meta HTTP-EQUIV=REFRESH CONTENT='60; URL=a.php?id=<?PHP echo $id;?>'>这样的思路写出来的采集,不管你要采集多少条数据,绝对永不超时.