因为装的PHP版本是7.0的,抛弃了while方法,所以支付宝aopclient文件里的while方法识别不了,会报错:
while (list ($key, $val) = each ($para_temp)) {   //更改前

foreach ($para_temp as $key => $val) { //更改后

将while改为foreach即可

支付宝签约的时候的网址写个能访问到网站的页面就行

微信的要有个服务号获取授权(商户号要有地址以及服务号的授权域名)

1、在优化关联查询时,**只有在被驱动表上建立索引才有效!**

2、left join时,左侧的为驱动表,右侧为被驱动表!

1、直接浏览器输出(后台使用可用_blank直接跳走):
protected function put_csv($list,$title)
    {
        set_time_limit(0);//防止超时
        //ini_set("memory_limit", "512M");//防止内存溢出
        $file_name = "exam".time().".csv";
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename='.$file_name );
        header('Cache-Control: max-age=0');
        $file = fopen('php://output',"a");
        $limit = 100000;
        $calc = 0;
        foreach ($title as $v){
            $tit[] = iconv('UTF-8', 'GB2312//IGNORE',$v);
        }
        fputcsv($file,$tit);
        foreach ($list as $v){
            $calc++;
            if($limit == $calc){
                ob_flush();
                flush();
                $calc = 0;
            }
            foreach($v as $t){
                $tarr[] = iconv('UTF-8', 'GB2312//IGNORE',$t);
            }
            fputcsv($file,$tarr);
            unset($tarr);
        }
        unset($list);
        fclose($file);
        exit();
    }
public function daochu()
    {
        
        set_time_limit(0);//防止超时
        //ini_set("memory_limit", "512M");//防止内存溢出
        $headList = array('姓名', '电话', '密码', '新老');
        $dataList = Db::table('up_z_old_user')->field('u_name,u_phone,u_pass,u_old')
            ->page(1,100000)
            ->select();
        $this->put_csv($dataList, $headList);
    }
2、ajax直接保存然后返回路径(这个比较全,可以把要转换的字段对应关系做进去)
function exportExcel($file_name1,$file_name2,$title,$list,$status='',$values='')
{
    set_time_limit(0);//防止超时
    //ini_set("memory_limit", "512M");//防止内存溢出
    $date = date('Ymd');
    $dir = ROOT_PATH . 'public' . DS . 'excel/' . $date;
    if(!file_exists($dir)){
        //检查是否有该文件夹,如果没有就创建,并给予最高权限
        mkdir($dir, 0700,true);
    }
    $file_name = $file_name1 . $file_name2 . '.csv';
    $path = ("{$dir}/".iconv('UTF-8','gb2312',$file_name));
    $file = fopen($path, 'w');
    $limit = 100000;
    $calc = 0;
    foreach ($title as $v){
        $tit[] = iconv('UTF-8', 'GB2312//IGNORE',$v);
    }
    fputcsv($file,$tit);
    foreach ($list as $v){
        $calc++;
        if($limit == $calc){
            ob_flush();
            flush();
            $calc = 0;
        }
        foreach($v as $kk => $t){
            if($status){
                if(in_array($kk,$status) && isset($values[$kk][$t]) && $values[$kk][$t]){
                    $t = $values[$kk][$t];
                }
            }
            $tarr[] = iconv('UTF-8', 'GB2312//IGNORE',$t);
        }
        fputcsv($file,$tarr);
        unset($tarr);
    }
    unset($list);
    fclose($file);
    $filePath = 'excel/' . $date . '/' . $file_name;
    $result = array( 'code' => 200, 'msg' =>"/".$filePath );
    return $result;
}
public function daochu()
    {
        set_time_limit(0);//防止超时
        //ini_set("memory_limit", "512M");//防止内存溢出
        if($data){
            $cellname = [
                '流水单号', '金额', '类型', '订单类型', '支付方式', '用户名称', '用户电话', '时间'
            ];
            $status = ['revenue_type','pay_type','revenue_one_type'];
            $values = [
                'revenue_type' => [1 => '收入',2 => '退款']
                ,'pay_type' => [1 => '微信',2 => '支付宝',3 => '银联']
                ,'revenue_one_type' => [1 => '自营订单',2 => '增补订单',3 => '统购订单',4 => '取消订单']
            ];
            $res = exportExcel('财务流水',date('Ymd'),$cellname,$data,$status,$values);
            return json($res);
        }else{
            return json(['code'=>0,'msg'=>'此条件下无数据']);
        }
    }

$subQuery  = $db2->table("app_register_info")
            ->where('update_time','>=','2018-06-20 23:59:59')
            ->order('update_time desc')
            ->buildSql();
$data = $db2->table($subQuery."a")
            ->field("a.loginTel u_phone,concat('用户',a.loginTel) u_name,a.loginPWD u_pass,a.update_time u_time")
            ->group('loginTel')
            ->order('update_time desc')
            ->select();

1、因为oneinstack的证书是自动更新的,所以查看定时任务能找到自动更新的命令:crontab -e

58 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

(目录在/root/.acme.sh;更新命令是引号里的,要带引号);
因为 LNMP 的 Let’sEncrypt 证书支持,用的是 acme.sh 程序,证书失效是acme.sh 程序9月份人家就升级 API CDN 接口了,所以升级acme.sh程序就行了:

1、cd /root/.acme.sh(根据定时任务里的目录)
2、acme.sh --upgrade(不行的话可以这样:./acme.sh --upgrade)

2、升级完再手动更新一次就行了:(或者重新安装一下网站)

"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" 

3、如果不能访问,别忘了开启443端口

PS:如果说是too many什么的就等一个小时,然后把/root/.acme.sh/网站 给删掉,重新装网站
PS2:如果是验证失败,把域名配置文件里的root地址链接后面的内容先去掉,更新成功了再加上