如何在不等待结果的情况下将 SQL 查询发送到 PHP 中的数据库

Posted

技术标签:

【中文标题】如何在不等待结果的情况下将 SQL 查询发送到 PHP 中的数据库【英文标题】:How to send a SQL query to database in PHP without waiting for result 【发布时间】:2010-12-03 16:04:11 【问题描述】:

使用 DB2 和 php,我的 ADD 和 DROP 需要很长时间才能完成(每个 ADD 和 DROP 30 秒)。我很好奇是否有一种方法可以在不让 PHP 等待响应的情况下将我的 ADD 和 DROP 发送到数据库?

【问题讨论】:

使用类似的东西 - w3schools.com/ajax/default.asp - 异步调用脚本。 @Dai - 最好将其发布为答案。 @Dai - 我可能会选择你的答案,因为这就是我想做的事情。 【参考方案1】:

我相当肯定大多数 php db 控件没有异步方法(太糟糕了)。假设您只需要执行不与最终用户交互的数据库语句,您可以使用pcntl_fork。如果您需要其他东西,this 之类的解决方案可能会更有用。

【讨论】:

我喜欢那个链接,但我认为你是对的......如果我要保留这个纯 PHP,我需要分叉它。【参考方案2】:

一个简单的解决方案是 cron 来安排你的任务

http://articles.sitepoint.com/article/introducing-cron

将所有要运行的 sql 脚本安排在预定的时间。

【讨论】:

【参考方案3】:

您可以编写一个“独立”的 php 脚本并使用“系统”调用将其启动。

您唯一的问题是如何将数据传递给脚本。我建议您创建一个中间“操作”表,您可以在其中插入所需的更新并让批处理脚本读取操作并应用更新。

如果您安装了 DB2,您可能也安装了 MQ。如果这样做,您可以查看一个解决方案,将更新请求推送到 MQ 队列中并让它们由触发的程序执行。

【讨论】:

以上是关于如何在不等待结果的情况下将 SQL 查询发送到 PHP 中的数据库的主要内容,如果未能解决你的问题,请参考以下文章

在不创建存储过程的情况下将 PL/SQL 发送到 Oracle

如何在不刷新页面的情况下将值从 jsp 页面发送到数据库

如何在不选择新实例的情况下将一个查询的结果加入另一个查询的结果? [复制]

如何在不更改表架构的情况下将查询结果存储在当前表上?

在 SQL 中,如何在不使用大小写的情况下将两个查询合并为一个?

如何在不破坏SQL逻辑的情况下将JOINS转换为子查询