PHP Conference Japan 2024

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);

?>

参见

添加注释

用户贡献的注释 6 条注释

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
23 年前
通常,在完成文件操作后始终关闭文件是一个好主意。很容易出现某些问题并损坏未正确关闭的文件。如果您担心效率,则开销可以忽略不计。
jgotti
12 年前
如果您在使用 stream_socket_server / stream_select 打开的一些客户端流正确断开连接时遇到问题,则应尝试使用 stream_socket_shutdown。

<?php stream_socket_shutdown($clientStream,STREAM_SHUT_RDWR); ?>
mark at markvange * com
18 年前
务必确保使用 fread() 或等效函数清除传入缓冲区中的所有传入数据包非常重要。尽管您可以调用 fclose(),但套接字直到传入数据包已清除后才会实际关闭。这可能会导致一些混淆。
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();
To Top