使用后有没有办法在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 session 可能仍然很忙,这会给您一个“命令不同步”错误。
所以,你要照顾
mysqli_close()
在该 session 上直到异步查询完成,否则连接 barfs mysqli_close()
隐含地,据我所知。 结论是:不要用
MYSQLI_ASYNC
,除非您处于非常不常见的环境中,该环境使用多个并行连接,永远不会让连接结束,并且不会在同一 session 上触发进一步的查询。
关于PHP MYSQLI_ASYNC 插入查询并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49999254/