Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii mysql服务器消失了_Php_Mysql_Yii - Fatal编程技术网

Php Yii mysql服务器消失了

Php Yii mysql服务器消失了,php,mysql,yii,Php,Mysql,Yii,设置一个队列,使其在数据进入时处于空闲状态以处理数据,有时我会发现关于mysql服务器的可怕错误已经消失。是否有人对如何在Yii中优雅地修复此问题有任何建议,当出现错误时,我可以重新启动数据库连接并继续 不要太在意mysql设置来增加等待时间,因为它可以帮助最小化问题,但不能解决问题 编辑 这可能看起来很有趣/悲哀,这取决于您如何看待它…我在运行的查询中添加了@符号,它们被try-catch捕获…如果错误代码在[2006]范围内,我会重置数据库连接,否则,应用程序将返回错误……希望这看起来是一个

设置一个队列,使其在数据进入时处于空闲状态以处理数据,有时我会发现关于mysql服务器的可怕错误已经消失。是否有人对如何在Yii中优雅地修复此问题有任何建议,当出现错误时,我可以重新启动数据库连接并继续

不要太在意mysql设置来增加等待时间,因为它可以帮助最小化问题,但不能解决问题

编辑
这可能看起来很有趣/悲哀,这取决于您如何看待它…我在运行的查询中添加了@符号,它们被try-catch捕获…如果错误代码在[2006]范围内,我会重置数据库连接,否则,应用程序将返回错误……希望这看起来是一个合理的答案……

我搜索了很多关于此问题的信息,当您使用特别是Yii命令时,Yii中会出现这种情况。我不知道为什么我要为每个AR创建一个新连接,如果autoConnect没有设置为false,这意味着重用打开的连接

    'db' => array(
         // Reuse a connections and not exceed the number of connections to got error 2006
        'autoConnect' => false,
         // If you are using a transactions and persistent connections
        'attributes' => array(
            PDO::ATTR_PERSISTENT => TRUE,
            PDO::ATTR_AUTOCOMMIT => FALSE
        )
    ),

我搜索了很多关于这个问题的信息,当您使用特别是Yii命令时,Yii中会发生这种情况。我不知道为什么我要为每个AR创建一个新连接,如果autoConnect没有设置为false,这意味着重用打开的连接

    'db' => array(
         // Reuse a connections and not exceed the number of connections to got error 2006
        'autoConnect' => false,
         // If you are using a transactions and persistent connections
        'attributes' => array(
            PDO::ATTR_PERSISTENT => TRUE,
            PDO::ATTR_AUTOCOMMIT => FALSE
        )
    ),
我通过添加

max_allowed_packet = 128M
wait_timeout=3600
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
在mysql的my.cnf中,我通过添加

max_allowed_packet = 128M
wait_timeout=3600
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

在mysql的my.cnf中

有什么用处吗?这可能只是MySQL的问题,而不是Yii的问题。@halfer我正在通过重新启动MySQL服务器来强制发送MySQL离开消息,目的是尝试在Yii上安装一个拦截器来从MySQL恢复,留下MySQL中有什么样的数据,可能您需要将这些数据放在b/w中的缓存中intervals@sakhunzai我有一个队列工作程序,只在redis密钥过期时进行几次读取,然后只写入数据。空闲时间是一整夜吗?有用吗?这可能只是MySQL的问题,而不是Yii的问题。@halfer我正在通过重新启动MySQL服务器来强制发送MySQL离开消息,目的是尝试在Yii上安装一个拦截器来从MySQL恢复,留下MySQL中有什么样的数据,可能您需要将这些数据放在b/w中的缓存中intervals@sakhunzai我有一个队列工作程序,只在redis密钥过期时进行几次读取,然后只写入数据。空闲时间是不是一夜之间?很高兴听到这个消息。你在哪里找到解释的?来自yii文档:“是否应该自动建立数据库连接组件正在初始化。默认为true…”我在通过AR填充数组结构对组件的_构造进行多次查询时看到了这一点。简而言之,这意味着当您初始化使用AR的新组件时,如果为false,yii不会与他创建新的连接。您必须了解服务器的消失有很多原因。这里的答案是减少时间间隔内资源的使用。但是,如果您的查询需要大量数据(例如,如果您有包含序列化数据或文章的文本列),则会发生此错误,因此在这种情况下,您必须增加(max_allowed_packet=256M)。这里的更多信息是链接:可能在重置所有连接的基础上还有其他问题:Yii::app()->db->setActive(FALSE);Yii::app()->db->setActive(TRUE);Yii::app()->db->setActive(FALSE);Yii::app()->db->setActive(TRUE);这两行很好。为什么我没有一些用于切换连接的util函数呢。谢谢,省了我很多钱。由于我对问题的模拟。这应该可以捕获异常并执行上面的2行神奇代码,然后就可以开始了。很高兴听到这个消息。你在哪里找到解释的?来自yii文档:“是否应该自动建立数据库连接组件正在初始化。默认为true…”我在通过AR填充数组结构对组件的_构造进行多次查询时看到了这一点。简而言之,这意味着当您初始化使用AR的新组件时,如果为false,yii不会与他创建新的连接。您必须了解服务器的消失有很多原因。这里的答案是减少时间间隔内资源的使用。但是,如果您的查询需要大量数据(例如,如果您有包含序列化数据或文章的文本列),则会发生此错误,因此在这种情况下,您必须增加(max_allowed_packet=256M)。这里的更多信息是链接:可能在重置所有连接的基础上还有其他问题:Yii::app()->db->setActive(FALSE);Yii::app()->db->setActive(TRUE);Yii::app()->db->setActive(FALSE);Yii::app()->db->setActive(TRUE);这两行很好。为什么我没有一些用于切换连接的util函数呢。谢谢,省了我很多钱。由于我对问题的模拟。这应该可以捕获异常并执行上面的2行魔术代码,然后就可以开始了。