服务热线
1888888888
作者:文煞发布时间:2023-11-22分类:PHP笔记浏览:365
本文通过使用PHP循环插入1000次随机10位数字到mysql数据库来分析在php中使用mysqli和pdo的性能表现情况,来分析在php中使用pdo方式还是使用mysqli的方式更优秀。分析对比逻辑:循环1000次,每次生成一个10位数字,成功插入数据库以后,统计处理时间。每一种方式个执行5次,然后通过5次所消耗的时间来求平均值,最后以平均值大小来判断执行速度,速度快者性能更优秀。
<?php // 设置数据库连接参数 if ($_GET != NULL) { $id = $_GET['id']; } else { $id = 1; } $db_host = '127.0.0.1'; $db_user = 'test'; $db_pass = 'test'; $db_name = 'test'; // PDO方式 if ($id == 1) { try { // 创建数据库连接 $pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass); // 设置 PDO 错误模式,以抛出异常 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 开始时间 $start_time = microtime(true); for ($i = 0; $i < 1000; $i++) { $str = rand(10000000000, 9999999999); $sql = "INSERT INTO test (test) VALUES (:test)"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':test', $str); $stmt->execute(); // 执行插入操作 } // 结束时间 $end_time = microtime(true); // 使用的时间 $execution_time = $end_time - $start_time; $execution_time = number_format($execution_time, 3); // 只保留三位小数 echo "PDO方式循环插入1000次随机10位数字,耗时:" . $execution_time . '秒'; } catch (PDOException $e) { // 如果连接过程中发生错误,则捕获异常并输出错误信息 echo "数据库连接失败: " . $e->getMessage(); } } elseif ($id == 2) { // mysqli方式 $conn = new mysqli($db_host, $db_user, $db_pass, $db_name); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $start_time_mysqli = microtime(true); for ($i = 0; $i < 1000; $i++) { $str = rand(10000000000, 9999999999); $sql = "INSERT INTO test (test) VALUES ('$str')"; $conn->query($sql); } $end_time_mysqli = microtime(true); $execution_time_mysqli = $end_time_mysqli - $start_time_mysqli; $execution_time_mysqli = number_format($execution_time_mysqli, 3); // 只保留三位小数 echo "Mysqli方式循环插入1000次随机10位数字,耗时:" . $execution_time_mysqli . '秒'; $conn->close(); } else { // 其他操作 } ?>
测试环境:
操作系统:CentOS Stream 8 x86_64(Py3.7.9)
PHP版本:PHP8.1
Mysql版本:MySQL 5.7.41
运行以上测试代码,然后记录每次运行时间:
运行次数 | 1 | 2 | 3 | 4 | 5 |
PDO方式: | 6.583 | 6.313 | 6.858 | 6.254 | 6.142 |
Mysqli方式: | 6.322 | 6.171 | 6.691 | 6.220 | 6.307 |
PDO方式执行前:
使用PDO方式连续5次运行截图:
PDO方式运行代码结束后清空数据表,使用mysqli方式连续运行5次:
PDO方式平均时间:6.43秒
Mysqli方式平均时间:6.3422秒
很诧异,在PHP中使用PDO方式处理同样的数据居然比使用Mysqli要稍微慢一点。本次测试Mysqli方式以微弱的优势胜出。不过本次测试只是单纯的数据插入测试,并不全面,测试环境也并不严谨、采样数据也不够丰富。
结论:在php中不管使用PDO方式还是Mysqli方式来处理mysql数据,性能表现不相上下,至少在本次测试插入数据的时间上相差不大。所以,对于我们普通站长来说,使用哪一种方式来处理mysql数据都是没有问题的。相对来说,使用PDO方式在更安全性上会更有优势一点。
分享:
支付宝
微信