前言
对于新手而言,要清晰的知道每一个功能的实现是如何落实到计算机语言的,所以不免会接触一些效率较低的代码
就拿本文举例,如果要实现读取或者写入的话可能需要以此使用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); ?>
个人觉得效率差异挺明显的。。。
发表回复