post item
2018年12月17日 16:10:51

PHP杂项

CV资讯


~~


http://php.net/features.commandline    commend cli  

https://overtrue.me/articles/2014/10/php-chinese-to-pinyin.html    汉语转拼音

https://laravel-china.org/docs/psr/psr-2-coding-style-guide/1606   PSR-N

https://implode.io/?mode=plain  Online PHP To Laravel!

http://www.dooccn.com/php7  Online PHP!

http://php.net/manual/zh/book.swoole.php     Swoole




public static function download($path, $file) {
$real = $path . '/' . $file;
if(!file_exists($real)) {
    return false;
}
    $size = filesize($real);
    $size2 = $size-1;
    $range = 0;
    if(isset($_SERVER['HTTP_RANGE'])) {
    //http_range表示请求一个实体/文件的一个部分,用这个实现多线程下载和断点续传!
    header('HTTP /1.1 206 Partial Content');
    $range = str_replace('=','-',$_SERVER['HTTP_RANGE']);
    $range = explode('-',$range);
    $range = trim($range[1]);
  header('Content-Length:'.$size);
  header('Content-Range: bytes '.$range.'-'.$size2.'/'.$size);
} else {
  header('Content-Length:'.$size);
  header('Content-Range: bytes 0-'.$size2.'/'.$size);
}
header('Accenpt-Ranges: bytes');
header('application/octet-stream');
header("Cache-control: public");
header("Pragma: public");
//解决在IE中下载时中文乱码问题
$ua = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/MSIE/',$ua)) {
  //表示正在使用 Internet Explorer。
  $ie_filename = str_replace('+','%20',urlencode($file));
  header('Content-Dispositon:attachment; filename='.$ie_filename);
} else {
  header('Content-Dispositon:attachment; filename='.$file);
}
$fp = fopen($real,'rb+');
  fseek($fp,$range);            //fseek:在打开的文件中定位,该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。成功则返回 0;否则返回 -1。注意,移动到 EOF 之后的位置不会产生错误。
  while(!feof($fp)) {           //feof:检测是否已到达文件末尾 (eof)
  set_time_limit(0);        //注释①
  print(fread($fp,1024));   //读取文件(可安全用于二进制文件,第二个参数:规定要读取的最大字节数)
  ob_flush();               //刷新PHP自身的缓冲区
  flush();                  //刷新缓冲区的内容(严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.)
}
  fclose($fp);
}




 发布者!!

Comments

Leave a comment

Loading