当保存对象时,我得到这个错误“一般错误:2006 MySQL服务器已经消失”。2006 MySQL服务器已经消失,同时保存对象
我不是要粘贴代码,因为它太复杂,我可以用这个例子来解释,但首先一些背景:
进出口使用尔康任务通过命令行执行功能,这个任务将创建一个来自Model类的对象和那个对象调用一个casperjs脚本,它在网页中执行一些动作,当它完成时它会保存一些数据,这里是有时我得到的mysql服务器已经消失,只有当casperjs花费更长时间。 Task.php
function doSomeAction(){
$object = Class::findFirstByName("test");
$object->performActionOnWebPage();
}
在Class.php
function performActionOnWebPage(){
$result = exec ("timeout 30s casperjs somescript.js");
if($result){
$anotherObject = new AnotherClass();
$anotherObject->value = $result->value;
$anotherObject->save();
}
}
这似乎是$ anotherObject->保存();方法受时间exec(“timeout 30s casperjs somescript.js”);需要得到一个答案,当它不应该。 它不是数据保存的问题,因为它失败并保存与相同的输入成功,我看到的唯一区别是时间casperjs需要返回一个值。 看来,如果由于某种原因,phalcon在“Class.php”函数的整个执行期间打开MySQL连接,在casperjs花费太长时间时引发超时,这是否有意义?你能帮我解决它或找到一个解决办法吗?
是的,那是我第一次猜测,但是当casperjs速度很快时,它保存所有内容都没有问题,是相同的数据。数据也非常简单。 – subharb
问题似乎是wait_timeout,因为之前的casperjs将比此变量花费更多时间,现在您已经优化了casperjs代码,因此它正在快速执行并且您没有收到问题....绝对首先,我们必须优化代码而不是更改DB变量盲目。 –