QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 注册 找回密码

php开发-PHP教程网


发表于 2019-3-28 22:49:30 | 显示全部楼层 |阅读模式
1.查看和设置mysql的wait_timeout的值
SHOW GLOBAL VARIABLES LIKE '%timeout%';

                               
登录/注册后可看大图
设置wait_timeout的值
SET GLOBAL wait_timeout=10;
2.当程序中有超过10秒的执行后,再次去执行一条sql语句 , 就会报错
Warning: Error while sending QUERY packet 或者 MySQL server has gone away
3.因此我们在使用单例的PDO对象的时候,要进行时间上的判断,比如我上面的例子,超过10秒的PDO对象,要重新new一下
  1. <?php
  2. $option=array();
  3. $timeout=time()+10;
  4. $pdo=new PDO("mysql:host=localhost;dbname=my_test","root","xxxx",$option);

  5. var_dump($pdo);
  6. /*
  7. object(PDO)#1 (0) {
  8. }
  9. */

  10. //此时执行了一个11秒时间的操作
  11. sleep(11);
  12. var_dump($pdo);
  13. /*
  14. object(PDO)#1 (0) {
  15. }
  16. */

  17. //此时需要重新new一下PDO对象,才可以继续操作,否则报错

  18. if($timeout<time()){
  19.         $pdo=new PDO("mysql:host=localhost;dbname=my_test","root","xxxxx",$option);
  20. }



  21. $pdo->query('set names utf8');
  22. $sth=$pdo->prepare("select * from index_test");
  23. $sth->execute(array("id"=>2000));
  24. $res=$sth->fetchAll();
  25. print_r($res);
复制代码


发表于 2019-3-28 22:50:00 | 显示全部楼层
边撸边过
发表于 2019-3-31 07:09:19 | 显示全部楼层
为了三千积分!
发表于 2019-3-31 13:32:45 | 显示全部楼层
大人,此事必有蹊跷!
发表于 2019-3-31 21:49:09 | 显示全部楼层
路过 帮顶 嘿嘿
发表于 2019-4-1 01:26:15 | 显示全部楼层
这么强,支持楼主,佩服
发表于 2019-4-1 02:01:44 | 显示全部楼层
支持你哈...................................
发表于 2019-4-6 04:29:18 | 显示全部楼层
元芳你怎么看?
发表于 2019-4-6 04:47:41 | 显示全部楼层
好,很好,非常好!
发表于 2019-4-6 05:39:32 | 显示全部楼层
嘘,低调。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆



Archiver|  

662p开源网. Powered by Niuzen

© 2001-2014 Niuzen Inc.

返回顶部