沫延说
沫延说

php中使用file_get/put_contents高效读取和写入文件的实现

前言

对于新手而言,要清晰的知道每一个功能的实现是如何落实到计算机语言的,所以不免会接触一些效率较低的代码

就拿本文举例,如果要实现读取或者写入的话可能需要以此使用fopen()打开,fwrite()写入以及 fclose()释放(关闭)

而实际上这三个步骤结合起来就是一条file_put_contents指令

 

示例

假设我们希望设计一个记录访问量的php程序,即:每次访问自动读取visitor_volume.txt数据并将里面的数值加一,如果文件不存在则新建

如果使用效率较低的手法是这样实现的:

//设定filename值为当前php目录下的visitor_volume.txt文件
$filename = './visitor_volume.txt';
//判断,如果filename不存在,则
if(!file_exists($filename)){
    //打开方式"w"(因不是我们要讲的内容,不再展开),文件不存在,则会创建
    $handle = fopen($filename, 'w');
    fwrite($handle, 0);//将0写入
    fclose($handle);//关闭文件释放资源 
}
//r模式读入文件,
$handle = fopen($filename, 'r+');
//将内容读出来
$line = fgets($handle);
$line++; //加1
rewind($handle);//将指针复位;
fwrite($handle, $line);//再将变量line写入
fclose($handle);//关闭文件释放资源

可以看到读取一条命令,写入一条,关闭一条

再来看看使用file_put_contents的实现

<?php
//设定filename值为当前php目录下的visitor_volume.txt文件
$filename = './visitor_volume.txt';
//判断
if(!file_exists($filename)){
        //写入0到filename值中的文件,如果不存在会自动创建,其中FILE_APPEND代表加到末尾,LOCK_EX指不允许其他程序同时写入
	file_put_contents($filename, 0 , FILE_APPEND | LOCK_EX);
}
//读取内容进visitor_volume。注意:这里变成了用file_get_contents。
$visitor_volume = file_get_contents('./visitor_volume.txt');
//写入+1后的内容
file_put_contents($filename, $visitor_volume+1 , LOCK_EX);
?>

个人觉得效率差异挺明显的。。。

 

 

没有标签
首页      生产环境      PHP      php中使用file_get/put_contents高效读取和写入文件的实现

Morton.L

文章作者

发表回复

textsms
account_circle
email


沫延说

php中使用file_get/put_contents高效读取和写入文件的实现
前言 对于新手而言,要清晰的知道每一个功能的实现是如何落实到计算机语言的,所以不免会接触一些效率较低的代码 就拿本文举例,如果要实现读取或者写入的话可能需要以此使用fopen()打开…
扫描二维码继续阅读
2020-11-27