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越搞越回去了?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM