fclose

(PHP 4, PHP 5, PHP 7, PHP 8)

fclose关闭打开的文件指针

说明

fclose(资源 $stream): 布尔值

关闭由 stream 指向的文件。

参数

stream

文件指针必须有效,并且必须指向由 fopen()fsockopen() 成功打开的文件。

返回值

成功返回 true,失败返回 false

示例

示例 #1 一个简单的 fclose() 示例

<?php

$handle
= fopen('somefile.txt', 'r');

fclose($handle);

?>

参见

添加说明

用户贡献说明 7 条说明

jricher at jacquesricher dot com
19 年前
检查 fclose() 的返回值是一件好事,因为一些操作系统只在关闭时刷新文件输出,因此可能会从 fclose() 返回错误。通过这样做,你可以捕获严重的数据丢失错误。

我从惨痛的教训中吸取了这个教训。
Glenn S
1 年前
注意,从 PHP 8.0 开始,尝试关闭已经关闭的流将抛出致命 TypeError 错误。

在 PHP 8 之前,这只会导致警告(你可以用 @ 静默它)。
daniel7 dot martinez at ps dot ge dot com
22 年前
通常,在完成文件操作后关闭文件始终是一个好主意。如果发生错误,并且文件没有正确关闭,很容易导致文件损坏。如果你担心效率,开销可以忽略不计。
jgotti
11 年前
如果你在使用 stream_socket_server / stream_select 打开的一些客户端流无法正确断开连接时遇到问题,你应该尝试使用 stream_socket_shutdown。

<?php stream_socket_shutdown($clientStream,STREAM_SHUT_RDWR); ?>
tom dot vom dot berg at online dot de
10 年前
如果你想通过一些函数串联一个文件句柄,并且每个函数都允许关闭文件,你可能应该先在下一个函数中查看该句柄是否仍然有效。

打开文件,通常会使用以下代码

if (!$fh = fopen($filename, $mode)) return false;

但是,如果你可能已经关闭了文件,并且你想检查这一点,类似的语句将不起作用。

不起作用:if (!$fh) end_of_chain();

使用更优:if (is_resource($fh)) end_of_chain();
mark at markvange * com
18 年前
确保你使用 fread() 或等效方法清除传入缓冲区中的所有传入数据包非常重要。虽然你可以调用 fclose(),但套接字实际上不会关闭,直到传入数据包被清除。这会导致一些混乱。
James R. Steel
18 年前
回应下面 kumar mcmillan 的“gotcha”说明,我们在 W2K 机器上得到了不同的结果

<?php
$file_pointer
= fopen('textfile.dat', 'r');
fclose($file_pointer);
echo
'$file_pointer is resource = ' . (is_resource($file_pointer) ? 'true': 'false');
?>

输出
$file_pointer is resource = false
To Top