【问题标题】:How long does a mysql_connect stay open?mysql_connect 保持打开状态多长时间?
【发布时间】:2011-03-22 21:00:42
【问题描述】:

我有一个 CLI 脚本,当您第一次启动它时:

function __construct(){$this->connectToDatabase();}
protected function connectToDatabase(){
    try{
        $this->databaseName = $this->dbname;
        $this->posName = $this->posName;
        $this->vlog = $this->vlogName;
        $this->database = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
        mysql_select_db($this->databaseName, $this->database);
    }
    catch(Exception $e){
        $this->console($e);
    }
}

此 CLI 脚本可以运行数天。如何保持mysql连接打开?还是在每个 mysql_query 之前我必须检查连接是否仍然打开?

这是我得到的错误:

MySQL 错误:MySQL 服务器已消失

【问题讨论】:

  • 您对此有什么问题吗?连接应该保持打开状态(除非您有一些设置限制了连接在服务器上打开的时间)。
  • 是的,我有问题。基本上这是一个接受 websocket 连接的“服务器”cli。出于某种原因,当我尝试连接一天后,我得到了MySQL Error: MySQL server has gone away 错误

标签: php mysql command-line-interface


【解决方案1】:

检查这个:https://www.digitalocean.com/community/questions/how-to-set-no-timeout-to-mysql

特别指出:

服务器超时并关闭 联系。默认情况下,服务器 8 小时后关闭连接或 28800 秒,如果什么都没发生。 您可以通过以下方式更改时间限制 设置 wait_timeout 变量时 你通过你的服务器启动 mysqld /etc/my.cnf [...]

【讨论】:

  • 这是一个必须每天至少运行 12 小时的服务器。我不能在工作时间让它超时
  • 我在 my.cnf 文件中没有看到 wait_timeout
  • 如果你没有看到 wait_timeout,就添加它。顺便说一句,出于这个原因“这个 CLI 脚本可以运行几天。” ?
  • 我说它“可以”保持运行数天,并不意味着它会在未来运行。我必须为其添加一个关闭机制,如果它到达第二天就会关闭^_^
  • 大声笑,不是很长的查询。它是一个 websocket 服务器。客户可以在一天中的任何时候联系并询问信息
猜你喜欢
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多