如果向服务器发出ajax请求以在后端运行脚本并且用户关闭了浏览器。如果脚本开始并处于中间进程,那么该脚本是否会在后端完成执行?
答案 0 :(得分:5)
NO .. ,PHP脚本不会终止执行。
是.. 它将完成执行。
启动php脚本后,它将完成执行,然后停止。
因为,php在服务器端运行,它不会被browser window close
这样的客户端简单事件打断。
但是客户端无法看到输出。
代表:
试用此代码:
//File Name: xyz.php
<?php
$fp=fopen("output.txt","w");
$count=0;
for($count=0;1;$count++){
//Infinite loop
fwrite($fp,"".PHP_EOL."".$count."");
}
fclose($fp);
?>
现在测试此文件,即使在关闭浏览器窗口后,它也会继续在该输出文件(output.txt
)内打印。
不要忘记关闭来自php
或command prompt
的{{1}}脚本,或者它会填满你的硬盘(我只用了10秒钟,其中5秒浏览器关闭,消耗160 MB!)。
以下是结果分析:
最初文件大小为:0Kb,
五秒钟后:76 MB(浏览器开启至此时)。
七秒后:125 Mb(假设浏览器关闭延迟,现在浏览器完全关闭),
仍然在10秒后:160 Mb(证明php正在后台运行: - ))
现在我已关闭task manager
,现在尺寸不变。
如果您想了解这种情况,请在httpd
usleep
为:
fwrite()
现在您可以在usleep(1*1000*1000); // Sleep for 1 sec.
fwrite($fp,"".PHP_EOL."".$count."");
文件中看到它发生了。即使你关闭浏览器后。但是由于延迟因素,上面给出的结果分析现在不适用(如果只考虑文件因子的大小),
答案 1 :(得分:1)
好吧,PHP是服务器端,它计算所有代码然后将结果发送到客户端。所以我猜即使你关闭浏览器也会完成脚本执行。