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
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)){           echorow['name'].' - '.date("Y-m-d H:i:s")."n"; 
    }   
    sleep(2);
}

文章来源于互联网:Mysql Pdo连接

发表评论