zoukankan      html  css  js  c++  java
  • thinkphp5.0 与thinkphp5.1 db()函数的区别

    最近在做项目分别使用了TP5.0,TP5.1查看日志文件的时间发现一个有趣的问题,

    以我做过的测试代码为例

    for ($i = 0; $i < 700; $i++) {
      $tmp['name'] = 'f_'.$i;
      $tmp['times'] = date('Y-m-d H:i:s');
      db('task')->insert($tmp);
    }

    很简单的代码,就是在task这个表中连续插入700条数据。

    在使用TP5.1的时候,查看日志文件发现

    [ sql ] [ DB ] CONNECT:[ UseTime:0.000533s ] mysql:host=127.0.0.1;dbname=xun_php_cn;charset=utf8
    [ sql ] [ SQL ] INSERT INTO `op_task` (`name` , `times`) VALUES ('f_7' , '2019-11-20 16:19:52') [ RunTime:0.001197s ]
    [ sql ] [ DB ] CONNECT:[ UseTime:0.000514s ] mysql:host=127.0.0.1;dbname=xun_php_cn;charset=utf8
    [ sql ] [ SQL ] INSERT INTO `op_task` (`name` , `times`) VALUES ('f_8' , '2019-11-20 16:19:52') [ RunTime:0.001186s ]
    [ sql ] [ DB ] CONNECT:[ UseTime:0.000546s ] mysql:host=127.0.0.1;dbname=xun_php_cn;charset=utf8
    [ sql ] [ SQL ] INSERT INTO `op_task` (`name` , `times`) VALUES ('f_9' , '2019-11-20 16:19:52') [ RunTime:0.001553s ]
    [ sql ] [ DB ] CONNECT:[ UseTime:0.000641s ] mysql:host=127.0.0.1;dbname=xun_php_cn;charset=utf8
    [ sql ] [ SQL ] INSERT INTO `op_task` (`name` , `times`) VALUES ('f_10' , '2019-11-20 16:19:52') [ RunTime:0.001717s ]

    每插入一条数据,都需要重新连接MYSQL

    同样的代码 在使用TP5.0的时候  就只有一条连接MYSQL的日志    

    [ sql ] [ DB ] CONNECT:[ UseTime:0.000533s ] mysql:host=127.0.0.1;dbname=xun_php_cn;charset=utf8
    [ sql ] [ SQL ] INSERT INTO `op_task` (`name` , `times`) VALUES ('f_7' , '2019-11-20 16:19:52') [ RunTime:0.001197s ]
    [ sql ] [ SQL ] INSERT INTO `op_task` (`name` , `times`) VALUES ('f_8' , '2019-11-20 16:19:52') [ RunTime:0.001186s ]

    [ sql ] [ SQL ] INSERT INTO `op_task` (`name` , `times`) VALUES ('f_9' , '2019-11-20 16:19:52') [ RunTime:0.001553s ]

    并且 测试虚拟机 mysql连接数设置为 800 

    for ($i = 0; $i < 1000; $i++) {
      $tmp['name'] = 'f_'.$i;
      $tmp['times'] = date('Y-m-d H:i:s');
      db('task')->insert($tmp);
    }

    如果插入数据是1000条 TP5.1就会报错  提示 too many connecntios 错误 ,TP5.0不会报错      

    并且换一种写法 TP5.1的时候会报错,

    $obj = db('task');

    for ($i = 0; $i < 1000; $i++) {
      $tmp['name'] = 'f_'.$i;
      $tmp['times'] = date('Y-m-d H:i:s');
      $obj->insert($tmp);
    }

    TP5.0 这种写法就正常执行,并且效率提升很多 请看我前面的测试结果

    https://www.cnblogs.com/fuyifan/p/11898241.html

    以我粗浅的理解,是不是TP5.1越搞越回去了?

  • 相关阅读:
    微信开放平台:OpenAPI、云开发与基础管理能力升级
    腾讯刘颖:从容器到低代码,腾讯云原生技术演进历程
    十年老站长心声:我为什么选择把 Hexo 网站迁移到 Webify
    腾讯云发布微搭生态开放计划,与合作伙伴携手共创产业未来
    SQL Server附加数据库出现错误5123的正确解决方法
    数据分页获取(二)
    Select语句
    数据分页获取(一)
    SQL Server中行转列原理
    QT实现Linux下系统监控小工具之二
  • 原文地址:https://www.cnblogs.com/fuyifan/p/11898646.html
Copyright © 2011-2022 走看看