【php性能优化】关于写入文件操作的取舍方案
程序员文章站
2022-03-20 19:20:16
对于使用php对文件进行写入操作有两种方案一种使用 file_put_contents() 和 fopen()/fwrite()/fclose() 两种方案至于应该怎么选,我觉得应该分情况选择,下面是实验的效果图 场景一: 写入的文件内容不多,不需要分批写入 使用file_put_contents( ......
对于使用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() 方案毕竟差距还是很大的~
上一篇: 结合JDK源码看设计模式——观察者模式
下一篇: 最全的Spring注解详解