的PHP

PHP & jQuery ajax call without waiting for response

我正在为某事而苦苦挣扎。

我有一个PHP页面,它使用jQuery $.ajax对另一个页面进行ajax调用。它将请求异步发送到处理页面,然后返回响应。

这现在可以正常工作,但是我们正在对后端进行一些更改,并且运行的处理(SQL存储过程)现在花费的时间要长得多,例如超过5分钟。等待是很好的,因为我们正在处理SQL中接近200MM的记录。

问题是我需要能够将请求发送到处理页面,而不必等待响应。处理页面将触发PHP中的存储过程,如下所示:

1
2
3
            $query = $dbh2->prepare('exec sp_name :countID');
            $query->bindParam('countID', $countID);
            $query->execute();

再次,该存储过程需要一段时间才能运行,并且我们不需要将其结果呈现给用户。虽然在存储过程之后需要运行一些其他PHP代码,但同样也无需将任何内容发送回浏览器。

我正在尝试找出一种方法来调用处理页面,它可以运行存储过程和其他代码,但是用户的浏览器不需要等待响应。现在,如果尝试过早单击页面,则基本上会锁定浏览器一段时间,并且无法完成处理。

任何对此的见识都会很棒。

在此先感谢您的帮助。


Sequenzia,如果我理解正确,那么经过大量研究,我一直在这里找到解决这个难题的方法。

几个月前,我提供了一个类似问题的答案。不幸的是,OP或其他任何人都没有接受过/评论过/赞成/反对-nada。

  • 从我的网站运行批处理文件

这是一些有用的参考资料:

运行后台脚本(unix命令)

  • 参考:http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/
  • 参考:http://www.mathinfo.u-picardie.fr/asch/f/MeCS/courseware/users/help/general/unix/redirection.html

如何编写PHP $ shortopts和$ longopts

这是当从命令行运行时或在使用shell-exec()从另一个PHP脚本运行时解释传递给PHP脚本的参数的方法

  • 参考:http://www.php.net/manual/zh/function.getopt.php

您可能会考虑为$.ajax()方法设置timeout选项。通过将超时设置为大约半秒或其他时间,ajax将会超时并进入错误处理程序(如果有)。