PHP中,数据通常都是存储在MySQL数据库当中的。但是有些时候,我们还是需要使用PHP读写一些本地文件。比如生成静态页面或者数据的本地缓存。
我们用一个简单的访问日志来演示一下fopen, fread, fwrite, fclose的用法。
每当我们访问此网页的时候,会显示出访问过的IP以及访问时间;同时当前的访问也会被记录,以便在下次访问的时候出现。
- <?php
- header("Content-Type: text/plain");
- $visitorIP = $_SERVER["REMOTE_ADDR"];
- $currentTime = date("H:i:s");
- if( file_exists("./visitLog.log") ):
- $logFileHandle = fopen("./visitLog.log", "r+");
- $logFileSize = filesize("./visitLog.log");
- $logContent = fread($logFileHandle, $logFileSize);
- else:
- $logFileHandle = fopen("./visitLog.log", "x+");
- $logContent = "/r/tNo more Log";
- endif;
- echo "Visit Log:" .
- $logContent;
- fwrite($logFileHandle, "/r/t" . $visitorIP . "/t" . $currentTime);
- fclose($logFileHandle);
- /* author: www.jzxue.com */
- ?>
首先我们需要使用 file_exists(filename) 函数来判断日志文件是否存在,如果不存在则创建;
随后如果存在,我们直接读取其所有内容,用 fread(fileHandle, sizeToRead) 来读取(如果需要读取所有的内容,sizeToRead 可以直接填写文件的大小);
读取完之后,我们在用 fwrite(fileHandle, contentToWrite) 来写如新的访问记录;
当所有的文件操作都完成后,我们用 fclose(fileHandle) 来关闭已打开的日志文件。
所有操作完成!