正在研究php框架,突然发现一个奇特的问题:框架中php代码连接数据库使用PDO和mysqli,尽然会导致页面加载速度上产生很大的差距。一开始还以为是框架本身造成的这种现象,所以在本地写了一个基础的测试用例,只是分别用PDO和Mysqli连接数据库,看看页面响应速度。并且在php代码刚开始执行和执行结束输出微秒差值。

第一种连接DB方式:

$t1 = microtime();/* Connect to a MySQL server  连接数据库服务器 */   $link = mysqli_connect(   'localhost',  /* The host to connect to 连接MySQL地址 */   'xxxx',      /* The user to connect as 连接MySQL用户名 */   'xxxx',     /* The password to use 连接MySQL密码 */   xxxx');    /* The default database to query 连接数据库名称*/   if (!$link) {   printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error());   exit;   }  else {echo "connet ok<br/>";  }
$t2 = microtime();
echo $t2-$t1;

执行效率贴图:

以上两张图,都是php使用mysqli连接数据库,可以看到TTFB响应时间超长,都1s以上了,这只是打开一个只连接数据库的页面,但是页面上开始执行和结束的微秒有的时候差距蛮大。大部分是在0.0023微秒。

第二种方式:

$t1 = microtime();
$dbms='mysql';     //数据库类型
$host='127.0.0.1:3306'; //数据库主机名
$dbName='xxxx';    //使用的数据库
$user='xxxx';      //数据库连接用户名
$pass='xxxx';          //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
try {$dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象echo "connect ok<br/>";$dbh = null;
} catch (PDOException $e) {die ("Error!: " . $e->getMessage() . "<br/>");
}
//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));$t2 = microtime();
echo $t2-$t1;

执行贴图:

php使用PDO连接DB,页面的响应时间都在ms级,php代码从开始执行和执行结束所输出的微秒差值有的时候相等,而TTFB的时间也相差很大呢。

请看到的贴的懂得大师们,做个点评,说明下,谢谢

已懂,作结

连接数据库不同方式会影响TTBF快慢相关推荐

  1. 转:你提问的方式,影响你的一生

    个人理解:许多年前,网上有篇提问的艺术,受益非浅,常拿来给新进的同事看.凡事先问是不是,再问为什么,不要庸人自扰,更不要自怨自艾:以终为始,不设限,以解决问题要做什么为出发点,从不同角度.批判的.正面 ...

  2. ttbf 慢 php,連接數據庫不同方式會影響TTBF快慢

    正在研究php框架,突然發現一個奇特的問題:框架中php代碼連接數據庫使用PDO和mysqli,盡然會導致頁面加載速度上產生很大的差距.一開始還以為是框架本身造成的這種現象,所以在本地寫了一個基礎的測 ...

  3. C#中连接数据库的方式

    Sql Sever数据库 1.连接本地数据库(Windows验证登录方式) string constr = "server=本地服务器;Initial Catalog=数据库名称;Integ ...

  4. 【Python】三种连接数据库的方式

    文章目录 Python连接数据库 连接SQLite 连接MySQL 使用SQLAlchemy Python连接数据库 本文为jupyter Notebook导出文档,可能显示效果不太好 连接SQLit ...

  5. oracle的sqlplus连接数据库,sqlplus连接方式 Oracle通过sqlplus连接数据库的方式

    通过sqlplus可以连接数据库根据用户权限进行数据或者设定操作,这篇文章介绍一下常用的连接方式. 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: 方式1(本机): ...

  6. 利用计算机进行教学的优点,信息化教学手段对改善教学方式的影响

    邢军 摘  要:现代化信息技术的广泛应用已经在各个领域取得了快速的发展,计算机多媒体辅助教学这种现代化教育技术手段在大学.中专院校.中小学校已被逐渐推广和应用.相对于传统教学手段,它具有传输信息量大. ...

  7. 云计算如何对传统软件交付方式产生影响

    如果你正在运营一个项目,那么就会有将近100%的可能性,你会应用到SaaS(software of service,软件即服务)的形式.根据近期Northbridge和Wikibon近期的一项调查,每 ...

  8. linux malloc速度,性能 – memcpy()的速度受malloc()的不同方式的影响很大

    我写了一个程序来测试memcpy()的速度.但是,如何分配内存会极大地影响速度. 码 #include #include #include void main(int argc, char *argv ...

  9. java用JDBC连接数据库的方式

    //驱动位置 String sDBDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //连接数据库地址名字 Stri ...

最新文章

  1. 解决vue版本不匹配的问题 Vue packages version mismatch:
  2. 让iPhone帮你找钥匙钱包?这事还真的可行
  3. 深度学习核心技术精讲100篇(三)-层次自适应的多臂老虎机决策算法 ( HATCH )在滴滴中的应用
  4. Android自定义控件(特效二) 点击屏幕,根据所点击的位置绘制桃心
  5. count(id)count(1)count(*)count(字段)
  6. sqlserver 人名_sqlserver上机试题
  7. LeetCode 1701. 平均等待时间(模拟)
  8. Collection框架介绍
  9. Python面试必须要了解的15个问题
  10. Radon变换——MATLAB
  11. 系统动力学建模代做,vensim建模代做,流图建模,不确定分析。
  12. Java面试题之分布式事务篇
  13. 使用pip报错error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“:
  14. python自动化webdriver_轻松自动化---selenium-webdriver(python) (六)
  15. 怎样修复CRC校验错误?
  16. video 播放视频被x5内核浏览器劫持时的处理记录
  17. 穿越功耗墙,从哪些方面提升性能?
  18. 【038】翼辉携手太空链:拥抱商业航天发展
  19. 2020外地人如何把户口迁入广州
  20. 类和对象(一)this指针详解

热门文章

  1. 【数据结构-源码分析】HashMap源码分析(超级详细)
  2. PHP+TP框架实现微信公众号开发之发送模板消息
  3. 真杜比全景声家庭影院级投影设备,当贝做到了五千元内也支持
  4. CAD转JPG图片,在线转换成高质量彩色图片
  5. 微信小程序---目录结构
  6. 刘邦六大用人之道,很值得管理人员学习
  7. python pandas csv 写文件_Pandas读写CSV文件的方法介绍(附代码)
  8. [蓝桥杯]蓝肽子序列(c++详解)
  9. WebGL入门(三十九)-透明与不透明物体共存,绘制透明面和不透明面的立方体
  10. python ljust 中文_python ljust 中文_Python为文档批量注音(生僻字歌词为例)