mysql ping tp_thinkphp最近总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值