关闭浏览器会阻止PHP脚本完成执行吗?

Uda*_*ale 4 html php apache

如果向服务器发出ajax请求以在后端运行脚本,并且用户关闭了浏览器。如果该脚本启动并且处于中间进程中,它将在后端完成执行吗?

Ved*_*kar 6

,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);
?>
Run Code Online (Sandbox Code Playgroud)

现在测试该文件,即使关闭浏览器窗口,它也会继续在该输出文件(output.txt)中打印。

不要忘了关闭php从脚本command prompttask manager虽然,或者它会填满你的硬盘驱动器(我跑了,对于仅仅10秒,在5秒的浏览器被关闭,它消耗160 MB!)。

这是结果分析:

最初,文件大小为:0Kb,

五秒钟后:76 MB(浏览器一直处于打开状态)。

7秒后:125 Mb(假设浏览器关闭延迟,现在浏览器已完全关闭),

仍在10秒后:160 Mb(证明php在后台运行 :-))

现在,我已关闭,httpd并且大小现在不变。

如果您想了解这种情况,请在添加usleep之前fwrite()

如:

usleep(1*1000*1000); // Sleep for 1 sec.
fwrite($fp,"".PHP_EOL."".$count."");
Run Code Online (Sandbox Code Playgroud)

现在您可以看到它在该output.txt文件中发生。即使关闭浏览器也是如此。但是,由于延迟因素,上面给出的结果分析现在不适用于此处(如果仅考虑文件因素的大小)。