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

?>

參見

  • fopen() - 開啟檔案或 URL
  • fsockopen() - 開啟網際網路或 Unix 域套接字連線

新增筆記

使用者貢獻的筆記 6 則筆記

32
jricher at jacquesricher dot com
19 年前
檢查 fclose() 的返回值是一個好習慣,因為某些作業系統只會在關閉時才將檔案輸出刷新,因此可能會從 fclose() 返回錯誤。 透過這樣做,您可以捕捉到嚴重的資料遺失錯誤。

我可是吃過苦頭才學到這一點的。
3
Glenn S
1 年前
請注意,從 PHP 8.0 開始,嘗試關閉已經關閉的串流會拋出致命的 TypeError。

在 PHP 8 之前,這只會導致警告(您可以使用 @ 抑制)。
8
daniel7 dot martinez at ps dot ge dot com
23 年前
一般來說,在使用完檔案後將其關閉始終是個好主意。 沒有正確關閉的檔案很容易出錯並損毀。 如果您擔心效率問題,其額外開銷可以忽略不計。
7
jgotti
12 年前
如果您在使用 stream_socket_server / stream_select 開啟的某些用戶端串流無法正常斷線時,您應該嘗試使用 stream_socket_shutdown。

<?php stream_socket_shutdown($clientStream,STREAM_SHUT_RDWR); ?>
2
mark at markvange * com
18 年前
確保使用 fread() 或其他等效方法清除輸入緩衝區中的所有輸入封包非常重要。 儘管您可以呼叫 fclose(),但在清除輸入封包之前,套接字實際上並不會關閉。 這可能會造成一些混淆。
1
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