3

作为序言,我知道这不是一个好问题,也很难解释。

我有一个 PHP 脚本需要 5-10 分钟才能运行。我不希望用户必须等待它。如果我使用 jquery ajax“触发”脚本,然后用户离开该页面或关闭浏览器(并且不等待稍后会出现的响应(如果有的话)),脚本是否仍会完全执行(假设没有错误等)

谢谢!

4

3 回答 3

0

在您的 PHP 脚本中,您可以调用ignore_user_abort(true)将导致脚本运行的函数,而不管用户是否关闭页面。

于 2013-09-10T18:33:02.950 回答
0

如果您有权访问命令行,则可以使用命令行:

php /loc/to/file.php

这没有超时并且可能比 port:80 更快(调用 phpfile 的浏览器)

或者通过 php 调用另一个文件中的主 phpfile exec()

<?php
exec("php /loc/to/file.php > /loc/to/result.txt");
?>

您可能想要使用shell_exec() results.txt 的目录,并且文件本身需要是可写的。“大于”符号将 phpfile 的输出写入result.txt. 如果 php 会回123显,那将是 result.txt 的内容


5 到 10 分钟是长的时间,您可能需要检查您的代码是否有改进。如果您使用的是数据库,请在您使用分配的列上添加索引(索引),这样可以节省大量时间

于 2013-09-10T18:33:30.193 回答
0

一旦服务器收到 AJAX 请求和数据,它会照常处理它,即使您关闭页面或窗口。如果在服务器接收到 AJAX 请求之前关闭浏览器窗口,则不会进行处理。

此外,如果 AJAX 请求正在返回任何类型的数据或显示消息,建议您将窗口保持打开状态,以便服务器的请求响应有一些“侦听”页面。

于 2013-09-10T18:31:33.257 回答