debris

1.apache xSendFile支持

在我们提供文件下载、图片展示功能时,可能需要让php进行条件判断后(比如权限判断、扣除下载点数等),再循环读文件进行传输。这样做小文件还好,当遇到大文件时就会占用较多的内存资源,同时减慢了文件的传输速度。这个时候就需要xsendfile特性了,通过header发送xsendfile标记,可以直接把需要传输的文件直接交给web服务处理,大大减少了后台语言的资源占用,也加快了传输速度。

Ubuntu 安装xSendFile   sudo apt-get install libapache2-mod-xsendfile

xsendfile默认是关闭状态的,需要在virtual host(配置虚拟机的地方)添加两条指令

XSendFile on
XSendFilePath d:/xampp/file_path

xsendfilepath是必须配置的,因为如果不配置的话,php脚本只能调用当前及子目录的文件

脚本添加 header(‘X-Sendfile: filename.jpg’);

2.使用fsockopen实现异步调用方法

function post_socket()
{
    $fp = fsockopen("www.wenjunting.com", 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        $arr = array('key'=>1,'name'=>'test');
        $encodeData = http_build_query($arr);

        $out = "POST /test.php HTTP/1.1\r\n";
        $out .= "Host: www.wenjunting.com \r\n";
        $out .= "Content-type: application/x-www-form-urlencoded\r\n";
        $out .= "Content-Length: ".strlen(trim($encodeData ))."\r\n";
        $out .= "Connection: Close\r\n\r\n";
        $out .= trim($data);
        fwrite($fp, $out);
       //忽略执行结果
      /* while (!feof($fp)) {
          echo fgets($fp, 128).'<br/>';
      }*/
      fclose($fp);
   }
}

更多异步方法

发表评论

电子邮件地址不会被公开。 必填项已用*标注