Mysql Pdo连接

2019-08-25  本文已影响0人  lifefruity
  1. 如何出现 MySQL server has gone away
    用第3中的方法
  1. 代码中如何使用长连接和短连接
    PDO::ATTR_PERSISTENT:当前对Mysql服务器的连接是否是长连接

什么情况下使用长连接?
不同的脚本的执行间距非常短,同时每个脚本都要操作数据库(Mysql:mysql_pconnect())
虽然PHP是解析的,也没有像容器之类的东西,但这个长连接是由扩展库维护的,也相当于有一个数据库连接线程池,页面的数据库请求需要的时候就从池里获取。

  1. 会话过期
    如果mysql的配置中这样设置
    wait_timeout=10//貌似SHOW VARIABLES LIKE '%timeout%';不会改变。SHOW GLOBAL VARIABLES LIKE '%timeout%';就是改变的了
    interactive_timeout=10,//这个修改的会变
    那么下面sleep(2)毫无问题,会一直打印数据库内容,如果sleep(11),那就只打印一次,然后就MySQL server has gone away
<?php
$dbh = new PDO('mysql:host=localhost;dbname=jack', 'root', '');  
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


while(1){
    $sql = "select * from users";
    $stmt = $dbh->prepare($sql);  
    $stmt->execute();  

    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){    
        echo $row['name'].' - '.date("Y-m-d H:i:s")."\n"; 
    }   
    sleep(2);
}
上一篇下一篇

猜你喜欢

热点阅读