【发布时间】:2013-03-25 20:57:00
【问题描述】:
我正在为某事苦苦挣扎。
我有一个 PHP 页面,它使用 jQuery $.ajax 对另一个页面进行 ajax 调用。它将请求异步发送到处理页面,然后返回响应。
现在这工作正常,但我们正在对后端进行一些更改,现在运行的处理(SQL 存储过程)需要更长的时间,比如 5 分钟以上。等待很好,因为我们正在处理 SQL 中接近 200MM 的记录。
问题是我需要能够将请求发送到处理页面,而不必等待响应。处理页面触发 PHP 中的存储过程,如下所示:
$query = $dbh2->prepare('exec sp_name :countID');
$query->bindParam('countID', $countID);
$query->execute();
现在,存储过程需要一段时间才能运行,我们不需要将结果返回给用户。虽然在存储过程之后需要运行一些额外的 PHP 代码,但也不需要将任何内容发送回浏览器。
我正在尝试找出一种方法,可以调用处理页面并运行存储过程和其他代码,但用户的浏览器不需要等待响应。现在如果尝试过早点击关闭页面,它基本上会锁定浏览器一段时间并且不会完成处理。
对此的任何见解都会很棒。
提前感谢您的帮助。
【问题讨论】:
-
可能使用php.net/manual/en/function.exec.php,然后用它在服务器上执行一个文件,然后返回'ok'给浏览器。
-
我想你想要的是异步 PHP 调用?[stackoverflow.com/questions/124462/asynchronous-php-calls]