你自己试试做个大的循环,里面用sleep停顿一下,然后关闭浏览器。你再查找你代码预期的结果是否一致不就知道吗?这样够深刻吧?

解决方案 »

  1.   

    exit之类的确实可以按照正常逻辑方式推出程序,但是怎么知道是浏览器关闭了呢?
      

  2.   

    浏览器关闭是客户端的事,你用JS来判断之后再传给PHP吧!
      

  3.   

    不知道是否可以考虑使用关闭浏览器就触发事件的方式来做……
    我只是知道这样的事件触发方式JS就可以做到,但是不知道能否传值给server
    有人说的可以利用JS给PHP传值,我总是很怀疑!
      

  4.   

    不知道能不能,前面的那个任务还在服务器cpu队列中。用session不知行不行
      

  5.   

    "当浏览器请求的页面还没运算完成的时候,就关闭了浏览器"
    此时程序会终止,php会感知连接中断<?php
    while(!connection_aborted()) {
      $fp = fopen("状态.txt","w");
      fwrite($fp,"连接中断".time());
      fclose($fp);
    }
    ?>相关的说明见手册
    章 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 将会检测到连接已被中断,并调用关闭触发函数。 ......