最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 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. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

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

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级