作为序言,我知道这不是一个好问题,也很难解释。
我有一个 PHP 脚本需要 5-10 分钟才能运行。我不希望用户必须等待它。如果我使用 jquery ajax“触发”脚本,然后用户离开该页面或关闭浏览器(并且不等待稍后会出现的响应(如果有的话)),脚本是否仍会完全执行(假设没有错误等)
谢谢!
在您的 PHP 脚本中,您可以调用ignore_user_abort(true)
将导致脚本运行的函数,而不管用户是否关闭页面。
如果您有权访问命令行,则可以使用命令行:
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 分钟是很长的时间,您可能需要检查您的代码是否有改进。如果您使用的是数据库,请在您使用分配的列上添加索引(索引),这样可以节省大量时间
一旦服务器收到 AJAX 请求和数据,它会照常处理它,即使您关闭页面或窗口。如果在服务器接收到 AJAX 请求之前关闭浏览器窗口,则不会进行处理。
此外,如果 AJAX 请求正在返回任何类型的数据或显示消息,建议您将窗口保持打开状态,以便服务器的请求响应有一些“侦听”页面。