zoukankan      html  css  js  c++  java
  • php后台执行

    用PHP做采集程序,前台发送采集命令,后台进行采集。但采集时间较长,不可能让浏览器一直处于等待状态,

    所以做成前台发送完采集命令到服务器后,服务器进行后台采集,并与浏览器断开连接,这样用户就不用长时间等待(超时)。

    下面是查阅互联网后所做的总结:

    1. 要让浏览器与服务器断开Http链接,可以在后台返回信息的http response Header文件中加入相应的信息。

      比如:

      header("Connection: close");//告诉浏览器,连接关闭了,这样浏览器就不用等待服务器的响应
      header("HTTP/1.1 200 OK"); //可以发送200状态码,以这些请求是成功的,要不然可能浏览器会重试,特别是有代理的情况下

    2. 要让后台服务器返回关闭链接等信息到浏览器后 接着执行后续代码,我们可以用ob缓存。将返回头信息刷入浏览器。

      比如:flush();  //该函数为输出ob缓存内容到浏览器。

    完整代码如下:

     1     ob_end_clean();#清除之前的缓冲内容,这是必需的,如果之前的缓存不为空的话,里面可能有http头或者其它内容,导致后面的内容不能及时的输出
     2     header("Connection: close");//告诉浏览器,连接关闭了,这样浏览器就不用等待服务器的响应
     3     header("HTTP/1.1 200 OK"); //可以发送200状态码,以这些请求是成功的,要不然可能浏览器会重试,特别是有代理的情况下
     4     ob_start();#开始当前代码缓冲
     5     echo "后台已经开始执行,请干点别的事情";
     6     //下面输出http的一些头信息
     7     $size=ob_get_length();
     8     header("Content-Length: $size");
     9     ob_end_flush();#输出当前缓冲
    10     flush();#输出PHP缓冲
    11     //==========================================================================
    12     
    13     //下面的代码就在后台执行了,与浏览器已断开链接
    14     ignore_user_abort(true);    //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行
    15     set_time_limit(0);    //后台执行无时间限制    
    16        
    17         //采集程序
    18         for(...){
    19             //相应的采集代码
    20         }             
  • 相关阅读:
    如何操作3D中的摄像机
    软件开发的未来,是MDA/MDD/面向模式/Plugin IDE吗?[转]
    Hibernate3一个不错的入门介绍
    C#中的== Equals 与 Java 的== Euqals
    The Attributes property of a ListItem control only works within an HtmlSelect control
    WebWork 与 Struts
    会计基本流程
    常用 js 函数
    SQL中的sysobjects与syscolumns
    一个Struts2的的辅助工具
  • 原文地址:https://www.cnblogs.com/sallybin/p/4447815.html
Copyright © 2011-2022 走看看