zoukankan      html  css  js  c++  java
  • [PHP学习教程

    引言:读写大“二进制”文件,不必申请很大内存(fopen、fread、fwrite、fclose)!做到开源节流,提高速度!

    每天告诉自己一次,『我真的很不错』....

    加速读写大文件,在实际工作过程当中其实想必很多人都有这样的经历-大家知道,如果使用记事本(notepad)打开10M的文本文件,那会卡到无响应,但是如果使用Sublime或者Notepad++则瞬间打开。

    不展开讲了,接口简单,多说无益,直接上码。

    函数


    <?php
    /**
     * 读写大二进制文件,不必申请很大内存
     * 只有读取到内容才创建文件
     * 保证目录可写
     * @param string $srcPath 源文件路径
     * @param string $dstPath 目标文件路径
     * @return bool
     */
    function fetch_big_file($srcPath, $dstPath) {
        // 设置脚本执行时间无限长
        set_time_limit(0);
    
        if (!$fpSrc = fopen($srcPath,"rb")) {
            return false;
        }
    
        // 写文件 - 是否已打开?
        $isWriteFileOpen = false; 
        do {
            // 每次读取 8*1024个字节
            $data = fread($fpSrc, 8192);
            if (!$data) {
                break;
            } else if (!$isWriteFileOpen) {
                // 第一次读取文件,并且有内容,才创建文件
                $fpDst = fopen($dstPath,"wb");
                $isWriteFileOpen = true;
                fwrite($fpDst, $data);
            } else {
                // 写入
                fwrite($fpDst, $data);
            }
        } while (true);
    
        fclose($fpSrc);
        fclose($fpDst);
    
        return true;
    }
    
    // 功能示例:
    $srcPath = 'd:/PHP/data/eclipse-jee-kepler-R-win32-x86_64.pdf';
    $dstPath = 'Z:/reslibCovertingfiles/eclipse-jee-kepler-R-win32-x86_64.pdf';
    fetch_big_file($srcPath, $dstPath);
    echo 'success';

    各位看官,如果有误,请无情指出!

    未完待续……。

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4794186.html

     

  • 相关阅读:
    前端构建工具gulp使用
    网页部分内容显示不全
    less简单入门
    jquery——移动端滚动条插件iScroll.js
    css3常用动画+动画库
    windows下nodejs环境配置
    jquery——滚动条插件jscroll.js
    工欲善其事必先利其器——dreamweaver
    jquery常用方法
    nodejs模块——http模块
  • 原文地址:https://www.cnblogs.com/superdo/p/4794186.html
Copyright © 2011-2022 走看看