比如:在作大量数据备份的时候,或者10000000次循环的时候;
如果被强制执行,数据破坏或丢失怎么办?
另外,有时候我就想为了减少服务器资源占用,当客户关闭浏览器的时候就停止没运行完的服务器脚本,怎么作?
---------------------------------------------------------------
"当浏览器请求的页面还没运算完成的时候,就关闭了浏览器"
此时程序会终止,php会感知连接中断
1
2while(!connection_aborted()) {
3$fp = fopen("状态.txt","w");
4fwrite($fp,"连接中断".time());
5fclose($fp);
6}
相关的说明见手册
章 21. 连接处理
注: 以下内容对 PHP 3.0.7 及更高版本适用。
在 PHP 内部,系统维护着连接状态,其状态有三种可能的情况:
0 - NORMAL(正常)
1 - ABORTED(退出)
2 - TIMEOUT(超时)
当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限(请参阅 set_time_limit() 函数)时,TIMEOUT 状态的标记将被打开。
您可以决定您的脚本是否需要在客户端中断连接时退出。有时候让您的脚本完整的运行会带来很多方便,即时没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 设置中对应的“php_value ignore_user_abort”以及 ignore_user_abort() 函数来控制。如果您没有告诉 PHP 忽略用户的中断,您的脚本将会被中断,除非您通过 register_shutdown_function() 设置了关闭触发函数。通过该关闭出发函数,当远程用户点击 STOP 按钮后,您的脚本再次尝试输出数据时,PHP 将会检测到连接已被中断,并调用关闭触发函数。
......