关于php脚本的执行

echophp 发布于 2015/10/09 17:13
阅读 293
收藏 0

PHP还在运行循环就把页面关了还把浏览器关了,这个脚本怎么还在运行的?这是为什么呢?

我是这么想的:脚本调入内存了,但是把浏览器关了这个脚本不是从内存释放了吗?还是说脚本资源被apache服务器也占用了所以还不能释放?

加载中
0
沙拉曼德
沙拉曼德
客户端只是发请求,服务器端是解析后返回,浏览器关不关闭跟服务器没什么关系,
0
Swen1985
Swen1985
有个函数叫
ignore_user_abort
0
Tuesday
Tuesday
服务器内存已经被调起来了, 不会自动停止, 需要执行完, 自动停止. 
0
e
echophp

引用来自“Swen1985”的评论

有个函数叫
ignore_user_abort
谢谢!
0
eechen
eechen
浏览器中断,Nginx会通知PHP-FPM,这时PHP-FPM会自动中断请求,除非你在脚本中调用了ignore_user_abort(true).另外要注意,Linux上PHP调用sleep()时是不可中断的.
0
e
echophp

引用来自“eechen”的评论

浏览器中断,Nginx会通知PHP-FPM,这时PHP-FPM会自动中断请求,除非你在脚本中调用了ignore_user_abort(true).另外要注意,Linux上PHP调用sleep()时是不可中断的.
你的意思是浏览器关闭后脚本也终止运行? 但是我测试会继续运行的(在apache)
eechen
eechen
PHP在发送信息给浏览器时,才能检测连接是否已经中断.比如执行这段代码: for($i=0;$i<5;$i++) { echo $i; ob_flush(); flush(); sleep(1); } file_put_contents('/tmp/info.txt', $i); 在5秒内中断请求,将不会生成文件info.txt.
0
e
echophp

引用来自“Tuesday”的评论

服务器内存已经被调起来了, 不会自动停止, 需要执行完, 自动停止. 
和我的理解一样,谢谢!!
返回顶部
顶部