如果向服务器发出ajax请求以在后端运行脚本,并且用户关闭了浏览器。如果脚本启动并处于中间进程,该脚本是否会在后端完成执行?关闭浏览器会阻止PHP脚本执行完吗?
4
A
回答
4
否..,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! )。
下面是结果分析:
最初文件大小为:浏览次数,
后五秒钟: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
文件中。即使关闭浏览器后也是如此。然而,由于延迟因素,上面给出的结果分析现在不适用于此(如果仅考虑文件系数的大小)。
1
那么,PHP是服务器端,它计算所有的代码,然后将结果发送到客户端。所以我想即使关闭浏览器,它也会完成脚本执行。
相关问题
- 1. 在浏览器关闭时停止执行php脚本
- 2. 运行很长时间执行php脚本甚至浏览器关闭
- 3. 当浏览器关闭时PHP会在后台运行吗?
- 4. PHP会议上就关闭浏览器
- 5. 脚本不会停止,同时关闭浏览器或单击中止
- 6. php脚本不会在浏览器中执行
- 7. 浏览器停止/崩溃是否停止脚本执行?
- 8. 浏览器阻止?
- 9. 来自Ajax的php脚本在浏览器关闭后停止加载
- 10. 阻止浏览器缓存会话ID
- 11. 浏览器弹出窗口阻止程序已关闭/打开
- 12. 如何阻止selenium webdriver关闭浏览器?
- 13. 有人从命令行关闭执行php脚本时会被调用吗?
- 14. PHP:阻止浏览器请求
- 15. 防止浏览器在asp.net中关闭
- 16. 阻止IE浏览器
- 17. FB.UI被浏览器阻止?
- 18. 即使用户关闭浏览器,PHP脚本能否继续运行?
- 19. 每个浏览器请求多次执行php脚本
- 20. 请求完成且浏览器关闭后,Ajax是否会中止?
- 21. 关闭浏览器会话丢失
- 22. 应用内浏览器不会关闭
- 23. PHP脚本执行,输出HTML到浏览器,但浏览器不会显示它
- 24. 调用PHP时,浏览器或浏览器选项卡关闭
- 25. 模拟浏览器执行以执行脚本
- 26. 延迟或阻止加载,直到php脚本/ javascript已完全执行
- 27. zookeeper阻止WebLogic完全关闭
- 28. 提示并阻止用户浏览/关闭页面
- 29. (浏览器关闭后,进程一直运行直至完成)
- 30. 阻止CURL(通过CRON)请求的脚本在浏览器中运行
其实是的,他问脚本是否会完成它的执行:D – 2014-09-05 09:51:25