Blogger Information
Blog 5
fans 0
comment 0
visits 6387
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
thinkphp最近总结
family的博客
Original
1061 people have browsed it

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


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post