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

使用PinPHP有一段时间了,利用PinPHP在Sae上搭了个环境,运营一个月左右的《时尚美汇》,所以最近也一直在研究这套程序,顺便做些二次开发,加入些自己的想法。例如之前写过的博文:加入人人网帐号登录(淘宝登录其实也做了,只是在淘宝应用中心上用)、修改PinPHP采集。

好吧,今天来说说关于PinPHP后台批量采集的功能二次开发修改实现,本人一开始接解pinphp,使用的是2.1测试版,

到现在官方已经发布了2.2版,但遗憾的是,大家一值期待的批量采集功能并没有如愿发布,所以本人自己尝试去修改修改,

其实程序早在半个月前就写好了,只是自己在用,一方面工作有点忙,另一方面自己测试一段时间,顺便完善一下。

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

1、修改:adminTpldefaultitems_collectcollect.html页面,28行左右。

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]
<input type="checkbox" id="subcb_{$sval.id}" class="cb_{$val.id} subcb" name="cate[]" value="{$sval.id}"/>
<input type="hidden" id="subname_{$sval.id}" class="cbname_{$val.id} subcb" name="subname[]" value="{$sval.name}"/>

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

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

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.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 ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.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 ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.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、在模板里增加一个,adminTpldefaultitems_collectajaxCollect.html

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ajax</title>
<script language="javascript" type="text/javascript" src="__ROOT__/statics/js/jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
var 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(‘<span style="color:#C00000">全部完成</span>,共’+i+’个,其中’+j+’个失败<br />’);
return false;
}
if(!!url[i])
{
$.ajax({
url:url[i],
dataType:’html’,
cache:false,
async:true,
beforeSend: function(){
var str='<img src="__ROOT__/statics/admin/images/ajax_loading.gif" />’;
$(‘#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++;
}
</script>
</head>
<!— Downloads By http://www.veryhuo.com —->
<body>
<div id="result">
<span id="state"></span>
<span id="process"></span>
</div>
</body>
</html>

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

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

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

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

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



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

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

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

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

点击下载:pinphp批量采集

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

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » PinPHP后台批量采集的功能二次开发修改实现

1 评论

  1. Thank you for great content. Hello Administ. Metropol Halı Karaca Halı Öztekin ve Selçuklu Halı Cami Halısı ve Cami Halıları Türkiye’nin En Büyük Cami Halısı Fabrikasıyız…

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡