一.问题:
现在有1个使用yii2的console执行的php脚本,该脚本一直在后台执行.
追踪输出日志发现报:

  1. 2006 MySQL server has gone away

用Google查找mysql has gone away关键字传送到这里来的,看来我们是有缘人,这么久都没人回答,我来试着解答一下。

首先,我们来看一下 getIsActive方法的实现:

  1. /**
  2. * Returns a value indicating whether the DB connection is established.
  3. * @return boolean whether the DB connection is established
  4. */
  5. public function getIsActive()
  6. {
  7. return $this->pdo !== null;
  8. }

WTF!竟然是粗暴、简单地判断pdo属性是否为null,这样肯定没办法判断远端mysql是否已断开连接了。

你可以在每次mysql操作之后,调用\Yii::$app->db->close()来关闭数据库连接,即可解决。

分类: web

标签:   yii2