发布于 1970-01-01 08:00
  • 6 个回答
      1. 那这个文件保存着哪些信息?
        我也没找到那个文件,实例对象都在内存吧

      2. 如何在$db->xx()前判断这个DB已经断开了?
        可以使用异常抛出:

      <?php
      try {
          $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
          foreach($dbh->query('SELECT * from FOO') as $row) {
              print_r($row);
          }
          $dbh = null;
      } catch (PDOException $e) {
          print "Error!: " . $e->getMessage() . "<br/>";
          die();
      }
      ?>

      PHP提供持久化连接
      持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。

      <?php
      $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
          PDO::ATTR_PERSISTENT => true
      ));
      ?>
      2022-11-30 23:26 回答
    • RESOURCE

      2022-11-30 23:26 回答
    • mysql 导致这个行为的地方有两个 interactive_timeout 、wait_timeout
      可以通过修改mysql配置文件/etc/my.cnf来延长时间。这里设置的是10秒
      [mysqld]

      wait_timeout=10
      interactive_timeout=10
      

      解决方法是:
      将这两个参数改为:

      wait_timeout=100
      interactive_timeout=100
      

      重启MySQL Server进入后,查看设置已经生效。
      你试一试

      2022-11-30 23:26 回答
    • 本质上,对mysql的链接就是一个普通到socket套接字,所以也是一个File Descriptor。既然是tcp链接,那么链接双方有权利在任何时刻断开链接,就像楼上大神所说,这一般由mysql服务器定义链接超时时间,这样做是为了防止过多的链接导致mysql资源占用。

      一般来说在php中并不需要sleep啥的,正常对pdo对象的使用并不用考虑链接超时,pdo会维护好一切。

      2022-11-30 23:26 回答
    • 2022-11-30 23:26 回答
    • 本质是一块内存缓冲区

      2022-11-30 23:26 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有