• 【php性能优化】关于写入文件操作的取舍方案


    对于使用php对文件进行写入操作有两种方案一种使用

    file_put_contents() 和 fopen()/fwrite()/fclose() 两种方案至于应该怎么选,我觉得应该分情况选择,下面是实验的效果图

    场景一:

    写入的文件内容不多,不需要分批写入

    使用file_put_contents()的情况

    <?php
    $str = "";
    for ($i = 0;$i < 30000;$i++){
        $str .= '这是小段文本';
    }
    file_put_contents('file1.txt',$str);

    执行完操作写入文件用时 2557 µs

    使用 fopen 方式

    <?php
    $str = "";
    for ($i = 0;$i < 30000;$i++){
        $str .= '这是小段文本';
    }
    $handle = fopen('file2.txt','w');
    fwrite($handle,$str);
    fclose($handle);

    写入操作总耗时 2670 µs 虽然差距不大,但是我进行了多次实验,显示第二种方案确实比第一种时间长

    场景二:

    如果是将文本分批写入文件中的情况下

    使用file_put_contents()的情况:

    <?php
    for ($i = 0;$i < 30000;$i++){
        $str = '这是小段文本';
        file_put_contents('file1.txt',$str,FILE_APPEND);
    }

    用时 6215 ms

    使用 fopen 方式

    <?php
    $handle = fopen('file2.txt','w');
    for ($i = 0;$i < 30000;$i++){
        $str = '这是小段文本';
        fwrite($handle,$str);
    }
    fclose($handle);

    总共用时 866 ms 两者之间的差距还是蛮大的!

    总结:

    对于写入文件操作如果是一次性写入的话则优先选用 file_put_contents() 方案;如果是分批写入的话则应该选择 fopen() 方案毕竟差距还是很大的~

  • 相关阅读:
    前辈的经验
    ES6 的新特性
    jQuery 事件对象的属性和方法
    ECMAScript 6 入门
    浏览器的加载与页面性能优化
    ajax 基于 jquery 简单的 ajax 请求
    浏览器加载、解析、渲染的过程
    浏览器的加载和解析的过程,以及如何加快 HTML 的加载速度
    【经典问题】当你输入一个网址的时候,实际会发生什么?
    总结 IE 下的一些 BUG
  • 原文地址:https://www.cnblogs.com/itsuibi/p/10709513.html
Copyright © 2020-2023  润新知