关于php file_put_contents fwrite 比较,PHP fwrite 与 file_put_contents 两个函数的区别以下文字资料是由3搜网小编为大家搜集整理后发布的内容,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php file_put_contents fwrite 比较,PHP fwrite 与 file_put_contents 两个函数的区别”文章吧。
一、fwrite函数和file_put_contents函数的区别:
fwrite()函数和file_put_contents()函数都是将字符串写入到文件,但它们又有一定区别,具体如下表:函数名功能简介
fwrite()将字符串写入或追加到文件中;
写入文件前,需使用fopen()函数打开文件,
写入文件后,需使用fclose()函数关闭文件。
file_put_contents()将字符串写入或追加到文件中;
函数会自动执行打开文件、写入文件、关闭文件操作。
二、写入文件演示:
1、使用fwrite函数将字符串写入文件:<?php
//以从文件头开始写入的方式打开文件,会覆盖文件原有的内容
$handle = fopen('a.txt', 'w');
$num = fwrite($handle, "爱E族\n");
fclose($handle);
echo $num; //输出:8(汉字为3字节,E和换行符各一个字节)
2、使用file_put_contents函数将字符串写入到文件:<?php
$num = file_put_contents('b.txt', "爱E族\n");
echo $num; // 输出:8
三、追加文件演示:
1、使用fwrite函数追加文件:<?php
//以追加的方式打开文件,将文件尾部开始写入,不会覆盖原有内容
$handle = fopen('a.txt', 'a');
$num = fwrite($handle, "Aiezu.com\n");
fclose($handle);
echo $num; //输出:10
2、使用file_put_contents函数追加文件:<?php
// LOCK_EX: 写文件的时候先锁定,防止多人同时写入造成内容丢失
$num = file_put_contents('b.txt', "Aiezu.com\n", FILE_APPEND|LOCK_EX);
echo $num; // 输出:10
四、性能比较:
1、写入性能比较:<?php
$num = 1000;
$start = microtime(true);
for($i=1; $i<=$num; $i++) {
file_put_contents('b.txt', "Aiezu.com\n");
}
$time = microtime(true)-$start;
echo sprintf("file_put_contents函数写入%d次耗时%.3f秒\n", $num, $time);
$start = microtime(true);
for($i=1; $i<=$num; $i++) {
$handle = fopen('a.txt', "w");
fwrite($handle, "Aiezu.com\n");
fclose($handle);
}
$time = microtime(true)-$start;
echo sprintf("fwrite函数写入%d次耗时%.3f秒\n", $num, $time);输出:file_put_contents函数写入1000次耗时0.994秒
fwrite函数写入1000次耗时1.108秒
本例可以看出,对于覆写文件内容,file_put_contents函数会比fwrite函数稍快。
2、追加内容性能比较:<?php
$num = 100000;
$start = microtime(true);
for($i=1; $i<=$num; $i++) {
file_put_contents('a.txt', "爱E族", FILE_APPEND);
}
$time = microtime(true)-$start;
echo sprintf("file_put_contents函数追加内容%d次耗时%.3f秒\n", $num, $time);
$start = microtime(true);
for($i=1; $i<=$num; $i++) {
$handle = fopen('b.txt', "a");
fwrite($handle, "爱E族");
fclose($handle);
}
$time = microtime(true)-$start;
echo sprintf("fwrite一次打开追加内容一次,重复%d次耗时%.3f秒\n", $num, $time);
$start = microtime(true);
$handle = fopen('c.txt', "a");
for($i=1; $i<=$num; $i++) {
fwrite($handle, "爱E族");
}
fclose($handle);
$time = microtime(true)-$start;
echo sprintf("fwrite一次打开,追加内容%d次耗时%.3f秒\n", $num, $time);输出:file_put_contents函数追加内容100000次耗时0.765秒
fwrite一次打开追加内容一次,重复100000次耗时0.580秒
fwrite一次打开,追加内容100000次耗时0.112秒 本例可以看出,对于追加文件内容来说,fwrite函数比file_put_contents函数快很多,如果是fwrite一次打开写入多次,那更是快很多倍。
通过上面两例,发现更令人惊奇的一点,两个函数的追加内容比覆写内容,快近百倍,这是为什么呢?大家可以亲自测一下。
五、总结:
写入少量内容,单次写入,我们建议使用file_put_contents函数、一行代码,简单方便,性能也不错。对于连续写入多次,或者写入大块内容,建议使用fwrite函数配合其他函数,使用二进制流的方式,边读边写,减少内存占用。
以上就是关于“php file_put_contents fwrite 比较,PHP fwrite 与 file_put_contents 两个函数的区别”这篇文章的内容,希望分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注3搜网技术频道。