PHP MYSQLI_ASYNC插入查询并继续 - php

使用后是否有办法在PHP7.2脚本中继续

$sql = "INSERT INTO `table` SET `a` = 'aaa';
$result = mysqli_query($link,$sql,MYSQLI_ASYNC);
// $result is always 'true'

作为延迟插入的一种方式?

现在它给
Commands out of sync; you can't run this command now当我的脚本继续并执行下一个查询时。

我正在使用innodb,所以INSERT DELAYED不起作用,尽管我从PHP脚本的角度来看正在寻找相同的行为。 (部署查询,请勿等待其处理)

我是否需要使用单独的脚本和消息代理(例如RabbitMQ)将其用于InnoDB数据库?

参考方案

是的,MYSQLI_ASYNC将立即从mysqli_query()返回。

但是,当您运行下一个查询时,MySQL / MariaDB会话可能仍然很忙,这将给您“命令不同步”错误。

所以,你必须照顾

等待(未知)时间,然后再运行其他查询
在异步查询完成之前,不要在该会话上调用mysqli_close(),否则连接会失败
据我所知,甚至不让PHP脚本结束,因为它隐式调用了mysqli_close()

结论是:不要使用MYSQLI_ASYNC,除非您处于非常罕见的环境中,该环境使用多个并行连接,永远不要让连接终止,并且不会在同一会话上触发任何进一步的查询。

PHP mysqli获取查询返回的第一行的值 - php

我正在使用mysqli从数据库中获取某些数据。我正在使用的查询已设置为仅从数据库返回一行。有没有一种方法可以在不使用while循环的情况下获取该行的值?我知道一个while循环对于返回多于一行的行很有用,但是如果不需要while循环,我想避免这种情况,因为不必要的代码是不好的编程。 参考方案 是的-您可以使用:$row = $result->fetch…

PHP mysqli重新连接问题 - php

我在PHP中使用mysqli类时遇到麻烦,而且无法在任何地方找到答案。在我的脚本中,一个类创建一个mysqli连接,该连接在整个函数中使用。之后,该脚本分叉。子级也使用该连接,但是当子级死亡时,我遇到了父级关闭连接(MYSQL Server已消失)的问题。在切换到mysqli之前(仅使用mysql),我简单地调用mysql_ping以确保在父进程中执行查询之…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…