如果向服务器发出ajax请求以在后端运行脚本,并且用户关闭了浏览器。如果该脚本启动并且处于中间进程中,它将在后端完成执行吗?
不,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 prompt或task 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文件中发生。即使关闭浏览器也是如此。但是,由于延迟因素,上面给出的结果分析现在不适用于此处(如果仅考虑文件因素的大小)。
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |