登录  /  注册
博主信息
博文 5
粉丝 0
评论 0
访问量 6232
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
thinkphp最近总结
family的博客
原创
1040人浏览过

1.在数据库设计中,有金额一类的数据最好设为double型,之前遇到过设为float型数据取出时自动取整的情况,一般来说double型比float占用内存高,但是更加精确。

关于同时插入上百万条数据的代码优化:

2.1 第一种方法:使用insert into 插入,代码如下:

$params = array(‘value'=>'50′);

set_time_limit(0);

echo date(“H:i:s”);

for($i=0;$i<2000000;$i++){

$connect_mysql->insert($params);

};

echo date(“H:i:s”);最后显示为:23:25:05 01:32:05 也就是花了2个小时多!

2.2第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒  ,代码如下:

        

echo date(“H:i:s”);

$connect_mysql->query(‘BEGIN');

$params = array(‘value'=>'50′);

for($i=0;$i<2000000;$i++){

$connect_mysql->insert($params);

if($i%100000==0){

$connect_mysql->query(‘COMMIT');

$connect_mysql->query(‘BEGIN');

}

}

$connect_mysql->query(‘COMMIT');

echo date(“H:i:s”);

2.3

第三种方法:使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values  (),(),(),()然后再一次性插入,如果字符串太长,

则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet =  2*1024*1024*10;消耗时间为:11:24:06 11:25:06;

插入200W条测试数据仅仅用了1分钟!代码如下:

$sql= “insert into twenty_million (value) values”;

for($i=0;$i<2000000;$i++){

$sql.=”('50′),”;

};

$sql = substr($sql,0,strlen($sql)-1);

$connect_mysql->query($sql);

广泛使用的是第二种,处理速度最快是第三种。

原文链接:https://www.jb51.net/article/51975.htm

3.thinkphp phpExecl的一些参数设置:https://blog.csdn.net/weixin_30672295/article/details/94887628

4.值得一提的是php版本5.5之后才有array_column函数,如果想使用则在common.php中添加:

function array_column($array,$column_name)

    {


        return array_map(function($element) use($column_name){return $element[$column_name];}, $array);


    }

5.处理上传base64图片的方法

 public function uploadImg($file)

    {

            if ($file) {

                $bb=explode(";",$file['content']);

                $i=0;

                if($bb[0]=="data:image/gif"||$bb[0]=="data:image/png"||$bb[0]=="data:image/jpg"||$bb[0]=="data:image/jpeg"){

                    if($bb[0]=="data:image/png"){

                        $hou=".png";

                    }

                    if($bb[0]=="data:image/gif"){

                        $hou=".gif";

                    }

                    if($bb[0]=="data:image/jpg"){

                        $hou=".jpg";

                    }

                    if($bb[0]=="data:image/jpeg"){

                        $hou=".jpeg";

                    }

                    $i+=1;

                }else{

                    return ['code'=>0,"msg"=>"图片格式不正确"];

                }

               //  $a=0;

               // if($data['size']<=2097152){

               //    $a+=1;

               // }else{

               //     return ['code'=>0,"msg"=>"图片大小大于2M"];

               // }

               $fileName=ROOT_PATH . 'public' . DS . 'uploads';

               $savename=time();

                if($a+$i>=2){

                    $uploadUrl =  ROOT_PATH . 'public' . DS . 'uploads';

                    $info = $this->base64_image_content($file['content'],$uploadUrl);

                }

            return json($info);

    }

    public function base64_image_content($base64_image_content,$path){

        //匹配出图片的格式

        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){

            $type = $result[2];

            $new_file = $path."/".date('Ymd',time())."/";

            $basePutUrl = $new_file;

            if(!file_exists($basePutUrl)) {

                //检查是否有该文件夹,如果没有就创建,并给予最高权限

                $a = mkdir($basePutUrl, 0700);

            }

            $ping_url = time().".{$type}";

            $local_file_url = $basePutUrl.$ping_url;

            if (file_put_contents($local_file_url, base64_decode(str_replace($result[1], '', $base64_image_content)))){

                return date('Ymd',time())."/".$ping_url;

            }else{

                return false;

            }

        }else{

            return false;

        }

    }

6.thinkphp+vue前后端分离的方法:

将vue生成的压缩包放到public文件夹下,设置入口文件index.html的优先级高于index.php


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学