[英]Will closing the browser prevent a PHP script from finishing execution?
如果向服务器发出ajax请求以在后端运行脚本并且用户关闭了浏览器。 如果脚本启动并处于中间进程,那么该脚本是否会在后端完成执行?
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
)中打印。
不要忘记从command prompt
或task manager
关闭该php
脚本,否则它将填满你的硬盘(我只运行了10秒,其中5秒浏览器已关闭,消耗160 MB!)。
这是结果分析:
最初文件大小为:0Kb,
五秒后:76 MB(浏览器开启至此时)。
七秒后:125 Mb(假设浏览器关闭延迟,现在浏览器完全关闭),
仍然在10秒后:160 Mb( 证明php在后台运行 :-))
现在我关闭了httpd
,现在大小不变。
如果你想看看如何发生这种情况,只需在fwrite()
之前添加usleep
如:
usleep(1*1000*1000); // Sleep for 1 sec.
fwrite($fp,"".PHP_EOL."".$count."");
现在你可以在output.txt
文件中看到它发生了。 即使你关闭浏览器后。 但是由于延迟因素,上面给出的结果分析现在不适用(如果仅考虑文件因子的大小)。
好吧,PHP是服务器端,它计算所有代码,然后将结果发送到客户端。 因此,即使您关闭浏览器,我猜它也会完成脚本执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.