1. 什么是fclose()
fclose()是用来关闭一个打开的文件的函数,这个函数可以用来关闭文件句柄以及将记录的数据从PHP缓冲区中写入打开的文件中。如果一个文件句柄没有被关闭,会在最终关闭PHP进程之前一直保持打开状态,造成资源浪费并且可能会阻止其他程序对该文件进行访问。
2. fclose()的语法
fclose() 所需的必要参数就是打开文件返回的文件句柄。语法如下:
fclose($file)
文件句柄变量是通过 PHP 函数 fopen() 返回的,如下所示:
$file = fopen("test.txt", "r");
// 一些代码
fclose($file);
3. fclose()的实例
3.1 实例1:关闭文件句柄
这个实例会打开一个文件,检查是否成功打开,如果成功打开文件,那么将文件读取到一个字符串中,最终通过调用fclose()函数来关闭这个文件:
$file = fopen("test.txt","r");
if ($file) {
$contents = fread($file, filesize("test.txt"));
fclose($file);
}
3.2 实例2:用fwrite()写入一个文件,最终通过fclose()来关闭这个文件
这个实例会将文本放置到一个文件中,使用fclose()函数来将内容从PHP缓冲区刷新到文件中:
$file = fopen("newfile.txt","w+");
fwrite($file,"Hello World. Putting some text to test this out!");
fclose($file);
3.3 实例3:关闭文件
这个实例会打开一个文件,并将文件中的内容读取到一个字符串中。如果文件成功打开,那么调用fclose()来关闭文件:
$filename = 'test.txt';
$handle = fopen($filename, 'r');
$data = fread($handle, filesize($filename));
fclose($handle);
3.4 实例4:清空缓冲区,并关闭文件
这个实例会打开一个文件,对文件进行一些写入操作,并且之后同样通过fclose()函数来刷新输出到文件中的内容:
$filename = "test.txt";
$file = fopen( $filename, "w" );
fwrite( $file, "Some data to save to the file" );
fflush( $file ); //清空缓冲区
fclose( $file ); //关闭文件
4. 结论
在PHP中,如果不小心关闭了一个文件句柄,会在PHP进程结束之前重新打开这个文件句柄,因此关闭文件句柄是一个很好的做法,防止文件句柄被浪费并且决定程序在何时输出或者写入数据到文件。