A-A+
ecshop手动执行定时脚本
有段时间没怎么写关于ecshop系统文章了,因为最近一直在开发tp系统了,大多数的开发都在tp平台之上,不过最近要做一个商城嵌入到app软件里面,所以又重新开启了ecshop系统的开发,目前正在做一个同步订单的接口,除了可以使用定时脚本之外,客服部还希望可以在后台点击同步提交执行的功能,其实很简单,无非就是把定时任务的功能做成了手动而已。
ecshop有自己的一套定时脚本规则,只是研究起来费劲一点,所以只好自己去做一套了,主要是手动去执行,在定时脚本中,我们只要批量扫描就可以了,但如果是手动执行的话就不能直接批量扫描了,需要进行分页扫描,这样才不至于因为数据量太大而导致浏览器卡掉的情况。
好了,目前主要看一下如何自动分页扫描数据表,代码如上:
- /**
- * app同步订单接口
- * @param member_id = 会员id
- * @param order_no = 订单号
- * @param goods_name = 商品名称
- * @param return json
- */
- function syn_order($order_id){
- echo $order_id;echo '<br>';
- }
- //订单同步接口
- if ($_GET['act'] == 'syn_order'){
- $pagesize=20;
- $sql = 'SELECT `order_id` FROM ' . $ecs->table('order_info') . ' WHERE `order_status`=\'1\' and `pay_status`=\'2\' ORDER BY `order_id` desc ' . $limit . ' ';
- $rs = $db->query($sql);
- $recordcount=mysql_num_rows($rs);
- $pagecount=($recordcount-1)/$pagesize+1;
- $pagecount=(int)$pagecount;
- $pageno=$_GET["pageno"];
- $page = $_GET["pageno"]+1;
- if($pageno==""){
- $pageno=1;
- }
- if($pageno<1)
- {
- $pageno=1;
- }
- if($pageno>$pagecount)
- {
- echo '全部处理完成';exit();
- $pageno=$pagecount;
- }
- $startno=($pageno-1)*$pagesize;
- //分页显示
- $sql = 'SELECT `order_id` FROM ' . $ecs->table('order_info') . ' WHERE `order_status`=\'1\' and `pay_status`=\'2\' ORDER BY `order_id` desc limit '.$startno.','.$pagesize.'';
- $rs = $db->query($sql);
- while ($rows = $db->fetch_array($rs)) {
- $res = syn_order($rows['order_id']);
- }
- //www.xiariboke.net
- $url = "/api/Fix.php?act=syn_order&pageno=".$page;
- echo('<script language="JavaScript">');echo("location.href='$url';");echo('</script>');
- }
其实就是一个很简单的分页跳转,这样可以减轻批量扫描的负担,syn_order 方法则是逻辑代码,可以post到其它项目进行订单的同步,如果认真看代码的话,这里基本使用了php的原生代码,在其它开源软件里面可以通用。