php file_put_contents fwrite 比较,PHP fwrite 与 file_put_contents 两个函数的区别

您的位置:3搜网 > 技术 > php file_put_contents fwrite 比较,PHP fwrite 与 file_put_contents 两个函数的区别

php file_put_contents fwrite 比较,PHP fwrite 与 file_put_contents 两个函数的区别

来源:3搜网分类:技术时间:2022-07-13 16:54:36浏览量:

关于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搜网技术频道。