0

我使用以下代码通过 mysqli 事务在数据库中插入一些订单。有时它可以毫无问题地工作,有时它只是在 1 分钟后抛出一个错误,说:“Mysqli 服务器消失了”。当我在错误之后触发相同的事情时,它就会起作用。php 文件是通过 jquery post 触发的。

function InsertOrder($children){
  global $mysqli;
   foreach($children as $child){
     InsertOrder();
   }
}
require('../../sys/connect.php');
$mysqli->autocommit(FALSE); 
$error = false;

foreach($_POST){
   InsertOrder($children);
}
if(!$error)
{
    $mysqli->commit();
    die("done");
} else 
{
    $mysqli->rollback();
    die(getLanguageKey("label_mysqli_rollback",array($error)));
}

这只是我的代码的简单版本,仅此而已。如果我删除“$mysqli->autocommit(FALSE);” 它一直有效。

它也适用于我使用的其他递归函数。

您可以使用演示帐户按钮登录ur.ready2order.at 。然后你可以打电话: http ://ur.ready2order.at/views/order.dev.php?t_id=155

该站点使用提及脚本。有时 mysqli 服务器消失了……有时没有。单击白色按钮将产品放入订单列表,按钮的蓝色部分打开侧边和评论功能。

提前致谢

4

2 回答 2

0

我发现了这个问题。当我从使用 mysql 到 mysqli 重建我的代码时,我忘记了重写一个小函数。这导致了错误,因为它仍在寻找 mysql()。

对不起,谢谢。

于 2013-11-19T08:49:53.593 回答
0

有关于它的文档:MySQL server has gone away

尝试更改您的wait_timeout或提高脚本的速度。

于 2013-11-15T00:15:13.960 回答