zoukankan      html  css  js  c++  java
  • 停止ignore_user_abort

    1.一般来说,使用这个函数都是因为有些比较费时的操作,所以别忘了先设置set_time_limit(0),否则超时后照样会停止的
    2.如果在运行中没有输出,那么不管是否用这个函数,php都会运行到底的。因为php每接到一个请求都会运行,而如果运行过程中有输出的 话,php就能检测到客户端是否已经断开,如果没有断开,就继续运行;如果断开了,就停止运行了。所以没有输出的话,php会一直运行下去。
    看下面代码:
    echo "ok";// #1
    function sf(){
        for ($i = 1; $i <= 10; $i ++){
            $a .= ‘‘;
            echo ‘ok‘;// #2
            sleep(2);
        }
        $fp = fopen("sf.txt", "wb");
        fwrite($fp, $a);
        fclose($fp);
    }
    sf();
    echo ‘ok‘;// #3
     
    #1 #2 和#3 都是输出,由于是自上而下运行的,而函数sf才是费时操作,所以只有#2的输出检测到客户端断开的话才能让程序停止。
     
    补充:如果输出的内容很小,则可能会被PHP缓存,这样的话PHP还是检测不到客户端状态的。
    所以还要把缓存释放并输出到浏览器
    上面的代码还要在前面加上:
    ob_end_flush();//或ob_end_clean();(停止缓存)
    ob_implicit_flush(true);// 把缓存输出到浏览器
  • 相关阅读:
    爬虫防止浏览器防止debug处理
    php
    代码日记
    Linux定时任务
    Linux 三剑客(Awk、Sed、Grep)
    golang中使用ETCD
    golang中使用mysql数据库
    golang中使用Redis
    Linux进阶知识和命令
    Linux核心命令使用方法
  • 原文地址:https://www.cnblogs.com/webu/p/2754022.html
Copyright © 2011-2022 走看看