连接数据库不同方式会影响TTBF快慢

来源:互联网 发布:逆波兰算法 java 编辑:程序博客网 时间:2024/04/30 09:51

正在研究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的时间也相差很大呢。


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


0 0