• PHP--自动回调接口,分批修改数据


     /**
         * 修复 a表 生日格式问题
         * @author  qin
         */
        public function update_birthday_one()
        {
            $this->load->model('a');
            $datearr = @addslashes_array($this->input->get());
            $page_cur = empty($datearr['page'])?0:$datearr['page'];
            $nextpage = $page_cur+1;
            $page_num = 5000; // 5000左右比较好
            $limitmin = $page_num * $page_cur;
            $limitsql = "limit $limitmin,$page_num";
    
                // 查出xw_baoxian_spread_baoxian的生日
                $sql = "select id,birthday,age from a where age=0".$limitsql;
                $birth_data2 = $this->a->getwhere2($sql);
                if(empty($birth_data2['data'])){
                    echo 'OVER';
                    exit;
                }
                foreach ($birth_data2['data'] as $key => $val) {
                    $id = $val['id'];
                    $birthday = $val['birthday'];
                    $age = $val['age'];// 去除生日中的-和/符号
                        $birthday = str_replace('/', '', str_replace('-', '', $birthday));
                        // 把生日转换成时间戳
                        $birthday_in = 0;
                        if(!empty($birthday)){
                            $birthday_in = date('Y-m-d',strtotime($birthday));
                        }
                        //获取年龄
                        $age= $this->birthdaytoage($birthday_in);
                        // 更新生日和生日的时间戳
                        $this->a->update($id, ['age' => $age]);
                }
                $url = "https://xxx.com/test/update_birthday_one.html?page=$nextpage";
                echo '<script>url="'.$url.'";window.location.href=url;</script>';
        }

    /**
         * 年龄转生日(模糊结果)
         * @parameter int age(年龄)
         * @parameter string symbol(分隔符)
         * @return string (yyyy*mm*dd)
         */
        private function agetobirthday($age,$symbol='-')
        {
            $age = $age==0?25:$age;
            $nowyear = date("Y",time());
            $year = $nowyear-$age;
            $monthArr = [];
            for ($i=1;$i<13;$i++){
                $monthArr[] = $i<10?'0'.$i:$i;
            }
            $dayArr = [];
            for ($i=1;$i<29;$i++){
                $dayArr[] = $i<10?'0'.$i:$i;
            }
            $month_key = array_rand($monthArr,1);
            $month = $monthArr[$month_key];
            $date_tmp_stamp = strtotime($year.'-'.$month);
            $day = '';
            if( $month=='02' && date("t",$date_tmp_stamp)=='29' ) {
                $dayArr = array_merge($dayArr,['29']);
                $day_key = array_rand($dayArr,1);
                $day = $dayArr[$day_key];
            } else if ( $month=='02' && date("t",$date_tmp_stamp)=='28' ){
                $day_key = array_rand($dayArr,1);
                $day = $dayArr[$day_key];
            } else if( in_array($month, ['01','03','05','07','08','10','12']) ) {
                $dayArr = array_merge($dayArr,['29','30','31']);
                $day_key = array_rand($dayArr,1);
                $day = $dayArr[$day_key];
            } else {
                $dayArr = array_merge($dayArr,['29','30']);
                $day_key = array_rand($dayArr,1);
                $day = $dayArr[$day_key];
            }
            return  $year.$symbol.$month.$symbol.$day;
        }
    
        /**
         * 生日转年龄
         * @parameter birthday:yyyy-mm-dd
         * @return str`
         */
        private function birthdaytoage($birthday)
        {
            $age = 0;
            $year = date('Y',strtotime($birthday));
            $month = date('m',strtotime($birthday));
            $day = date('d',strtotime($birthday));
    
            $now_year = date('Y');
            $now_month = date('m');
            $now_day = date('d');
    
            if ($now_year > $year) {
                $age = $now_year - $year - 1;
                if ($now_month > $month) {
                    $age++;
                } else if ($now_month == $month) {
                    if ($now_day >= $day) {
                        $age++;
                    }
                }
            }
            if(empty($birthday)){
                $age = 26;
            }
            return $age;
        }
  • 相关阅读:
    [读书笔记]子查询
    [读书笔记]SQL约束
    [转载]NoSQL数据库的基础知识
    利用C#实现对excel的写操作
    [转载]SQL Server内核架构剖析
    利用花生壳和IIS发布网页过程
    [读书笔记]ASP.NET的URL路由引擎
    [翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)
    [正则表达式]基础知识总结
    CF623E Transforming Sequence
  • 原文地址:https://www.cnblogs.com/mrszhou/p/8990328.html
Copyright © 2020-2023  润新知