首页 >

PinPHP后台批量采集的功能二次开发修改实现

后端开发|php教程PinPHP后台批量采集的功能二次开发修改实现
PinPHP,后台,批量,采集,功能,二次开发,修改,实现,使用,PinPHP,,一段时间,了,利用,在,Sae,
后端开发-php教程
使用PinPHP有一段时间了,利用PinPHP在Sae上搭了个环境,运营一个月左右的《时尚美汇》,所以最近也一直在研究这套程序,顺便做些二次开发,加入些自己的想法。例如之前写过的博文:加入人人网帐号登录(淘宝登录其实也做了,只是在淘宝应用中心上用)、修改PinPHP采集。
csol自瞄易语言源码,vscode火狐,ubuntu修改文件后缀,tomcat响应,arm移植sqlite,ecshop服务器带宽选择,网页中显示时间的插件下载地址,前端react框架搭建,爬虫 面试,php难不难,杭州seo价格,网站图片相册代码,dj音乐网页源码,html模板步骤,iscroll 二级页面无法滚动,员工管理系统代码,图书管理系统登陆程序lzw
好吧,关于PinPHP后台批量采集的功能二次开发修改实现,本人一开始接解pinphp,使用的是2.1测试版,
flash相册 源码,vscode出现很多边框,ubuntu根密码,申请tomcat修改jmx,xpath爬虫网页,php 读取远程txt,嘉兴seo要优化哪些内容,web文件管理网站源码,帝国cms模板源码免费下载lzw
到现在官方已经发布了2.2版,但遗憾的是,大家一值期待的批量采集功能并没有如愿发布,所以本人自己尝试去修改修改,
皇冠信用盘源码,在ubuntu构建qemu,tomcat中间件系统,小伍爬虫,php页面布局怎么调节,seo转码lzw
其实程序早在半个月前就写好了,只是自己在用,一方面工作有点忙,另一方面自己测试一段时间,顺便完善一下。

实现原现很简单,主要是修改采集界面,加了几个checkbox,用于传递要采集的id、关键字等。

1、修改:admin\Tpl\default\items_collect\collect.html页面,28行左右。

Copy to Clipboard引用的内容:[www.liuzhongwei.com]

官方应该是有尝试去做批量采集,因为此页面上有关于批量采集的代码未完成,只是注释了。

2、然后在\admin\Lib\Action\items_collectAction.class.php上增加了一个函数,以及略修改原采集函数

Copy to Clipboard引用的内容:[www.liuzhongwei.com]
function ajaxCollect(){
set_time_limit(0);
$subname=$_REQUEST[‘subname’];
$arrUrls=array();
foreach($_REQUEST[‘cate’] as $k=>$v){
if(!empty($subname[$k])){
$arrUrls[]=’http://mmlike.sinaapp.com/mlike_admin.php?a=taobao_collect_jump&m=items_collect&pages=1&cate_id=’.$v.’&keywords=’.$subname[$k];
}
}
$this->assign(‘url’,json_encode($arrUrls));
$this->display(‘ajaxCollect’);
}

这一句有一些信息要注意一下

Copy to Clipboard引用的内容:[www.liuzhongwei.com]
$arrUrls[]=’http://mmlike.sinaapp.com/mlike_admin.php?a=taobao_collect_jump&m=items_collect&pages=1&cate_id=’.$v.’&keywords=’.$subname[$k];

page=1是采集一页,每页40个商品,如果需要一次采集更多商品,可自行修改,但不建议填太大的值,一方面采集时间长,另一方面,淘宝api请求可能会太频繁。

修改public function collect()函数,前半部分的if改成

Copy to Clipboard引用的内容:[www.liuzhongwei.com]
if(isset($_REQUEST[‘dosubmit’])){
/******批量采集*******/
$cate=implode(‘,’,$_REQUEST[‘cate’]);
$this->ajaxCollect();
//header(“location:”.U(‘items_collect/taobao_batch_collect_jump?act=batch&cate=’.$cate));
exit;
/******批量采集*******/
}

3、在模板里增加一个,\admin\Tpl\default\items_collect\ajaxCollect.html

Copy to Clipboard引用的内容:[www.liuzhongwei.com]
ajaxvar url={$url};
var i=0,j=0;
var len=url.length;
if(len>0){
bc=setInterval(“getCollect()”,1000);
}

function getCollect(){
var process=0;
if(i>len-1){
clearInterval(bc);
$(‘#state’).html(‘全部完成,共’+i+’个,其中’+j+’个失败
‘);
return false;
}
if(!!url[i])
{
$.ajax({
url:url[i],
dataType:’html’,
cache:false,
async:true,
beforeSend: function(){
var str=’PinPHP后台批量采集的功能二次开发修改实现‘;
$(‘#state’).html(str+’采集中…’);
},
success: function(data){
if(!!data){
process=Math.min(Math.round(i/(len-1)*100),100);
$(‘#process’).text(process+’%’);
}
},
error:function(){
j++;
process=Math.min(Math.round(i/(len-1)*100),100);
$(‘#process’).text(process+’%’);
}
});
}
i++;
}


了解php和js的朋友应该看懂,将组装好的采集url,以json形式放在js里,利用setInterval定时器去定时执行ajax请求,遍历所有的url

直到完成。一开始用setInterval而不是直接for遍历是担心分类多时,太频繁请求淘宝api会导致部份采集不成功。

上面的ajax使用异步请求,之前尝试使用同步去获取,是为了方便捕获到那个采集成功,哪个不成功,以便手动去采集,

测试了一段时间,虽然效果是达到了,但由于分类太多一次采集的时候,浏览器会卡,而已采集总时间也变长漫长。现还是使用

异步,不卡,缩短采集时间,虽然也可以实现失败捕足,但要修改更多的代码,这个有时间有研究。现在的效果如下

用%比显示进度,最后会显示完成度和有多少个失败,至于失败的再采集一次,又或者自己去检查哪个未采集手动采集。

这个修改后,原采集功能也可正常使用。

重申一下,本人使用的是pinphp2.1测试版,其他版本若要修改,可作为参考,以下是修改文件的打包,不建议直接覆盖,最好

对比一下代码,如要覆盖,请先备份原文件,以便恢复。

点击下载:pinphp批量采集

教学来源:http://meego123.net/?post=140

http://www.liuzhongwei.com/PHPjc/363820.htmlwww.liuzhongwei.comtruehttp://www.liuzhongwei.com/PHPjc/363820.htmlTechArticle使用PinPHP有一段时间了,利用PinPHP在Sae上搭了个环境,运营一个月左右的《时尚美汇》,所以最近也一直在研究这套程序,顺便做些二次开…

PinPHP后台批量采集的功能二次开发修改实现
  • PHP间隔一段时间执行代码办法
  • PHP间隔一段时间执行代码办法 | PHP间隔一段时间执行代码办法 ...

    PinPHP后台批量采集的功能二次开发修改实现
  • shopnc二次开发(一),shopnc二次开发(
  • shopnc二次开发(一),shopnc二次开发( | shopnc二次开发(一),shopnc二次开发( ...

    PinPHP后台批量采集的功能二次开发修改实现
  • 帝国CMS二次开发有哪些注意事项
  • 帝国CMS二次开发有哪些注意事项 | 帝国CMS二次开发有哪些注意事项 ...