如果程序中有while(1)或者其他死循环,这个进程就挂那里了。比如在远程读取的时候,卡在那里了。。

解决方案 »

  1.   

    好像远程读取的函数内部就有计时器的,这个函数会超时而返回一个错误
    我用 file($URL) 就是这样,即使前面设了 set_time_limit(0); 一样会超时而返回错误.
      

  2.   

    是的,如果程序中存在“死”循环且循环中没有“输出”的话
    你应该在可能的死循环中加入echo,这样就可以通过关闭浏览器来终止php的执行
      

  3.   

    你应该在可能的死循环中加入echo,这样就可以通过关闭浏览器来终止php的执行---------
    学到一招。
    只要有输出内容,如果没有浏览器接收的话,程序就会自动结束么?
      

  4.   

    要用cu上面另外一个朋友的一句话,完美终结这个问题:ignore_user_abort 就是像之前大家讨论的这样用的
    手册上特别提到一句
    当服务器尝试向客户端发送东西的时候,能够检测到连接已中断,并中止脚本运行,除非设置了register_shundown_function
    如果没有检测到,脚本自然运行到底
    然后,这个检测是基于有发送东西的,再然后,发送的东西是可能有n层缓冲的,PHP输出缓冲一层,INI里面配置的是否压缩输出... Apache的缓冲,压缩.... blabla ...
    脚本里面随手echo个什么然后flush一下,不见得真的这个内容就发送到客户端了
    so....
      

  5.   

    你应该在可能的死循环中加入echo,这样就可以通过关闭浏览器来终止php的执行
    // 浏览器关闭了 php仍然可以在运行着。
    while(1)
    {
       if(file_exists('a.txt')) break;
    }实际点。