Hàm fclose() trong PHP
Trần Thị Vân
- 1249
- 05/08/2025
Chức năng của Hàm fclose() trong PHP
Hàm fclose() trong PHP dùng để kết thúc quá trình đọc, ghi file nhằm giúp giải phóng tài nguyên và giúp dữ liệu lưu đúng cách.
Cú pháp của Hàm fclose() trong PHP
fclose($chế_độ_đọc_ghi_file);
$chế_độ_đọc_ghi_file: Chế độ đọc ghi file (Ví dụ: fopen($filename, "w"), fopen($filename, "r"),....)
Dùng để đóng chế độ đọc ghi file.
Trường hợp dùng Hàm fclose() trong PHP
Dùng Hàm fclose() trong PHP để kết thúc đọc file
<?php
$filename = "filetxt.txt";
$filecd = fopen($filename, "r");//mở file ở chế độ đọc
$noidung = fread($filecd, filesize($filename));//truyền số byte của file và tiến hành đọc file
echo "<pre>$noidung</pre>";//in nội dung của file ra màn hình
fclose($filecd);//đóng file
?>
Dùng Hàm fclose() trong PHP để kết thúc ghi file
<?php
$filename = "filetxt.txt"; //Đường dẫn file
$filecd = fopen($filename, "w");//Mở file và ghi
fwrite($filecd, 'fwrite vào toàn bộ file '); //Ghi nội dung vào file
fwrite($filecd, 'fwrite vào toàn bộ file '); //Ghi nội dung vào file
fclose($filecd);//Đóng file
?>
Những lưu ý khi sử dụng hàm fclose() trong PHP
Đóng file sau khi hoàn thành thao tác đọc hoặc ghi là bước nên có trong quy trình xử lý file bằng PHP. Hàm fclose() giúp giải phóng tài nguyên mà PHP đang sử dụng cho một file đang mở. Việc này đặc biệt đáng chú ý khi chương trình phải xử lý nhiều file hoặc thực hiện các thao tác file liên tục.
Điều gì xảy ra nếu không đóng file bằng hàm fclose()?
Nếu một file được mở nhưng không gọi fclose(), tài nguyên liên quan có thể tiếp tục được giữ trong thời gian script đang chạy. Với một đoạn mã nhỏ chỉ mở một file rồi kết thúc, vấn đề thường không dễ nhận thấy vì PHP sẽ tự giải phóng tài nguyên khi script kết thúc.
Tuy nhiên, trong chương trình xử lý nhiều file, việc chủ động đóng các file không còn sử dụng giúp mã nguồn rõ ràng hơn và hạn chế tình trạng giữ quá nhiều tài nguyên không cần thiết. Đây cũng là thói quen tốt khi xây dựng các chức năng đọc log, xử lý dữ liệu hoặc thao tác với nhiều file.
Ví dụ, sau khi hoàn thành việc ghi dữ liệu, có thể đóng file ngay:
<?php
$file = fopen("data.txt", "a");
if ($file !== false) {
fwrite($file, "Du lieu moi\n");
fclose($file);
}
?>
Không nên giữ một file mở lâu hơn khoảng thời gian thực sự cần thiết. Đặc biệt, nếu chương trình mở file bên trong vòng lặp, việc đóng file đúng lúc càng quan trọng để tránh tích lũy nhiều tài nguyên trong cùng một lần thực thi.
Có nên gọi hàm fclose() khi mở file thất bại?
Không. Chỉ nên gọi fclose() khi biến chứa một file handle hợp lệ được tạo ra từ thao tác mở file thành công. Nếu fopen() thất bại, giá trị nhận được có thể là false, lúc đó không có file handle hợp lệ để đóng.
Cách an toàn là kiểm tra kết quả của fopen() trước khi thực hiện các thao tác tiếp theo:
<?php
$file = fopen("data.txt", "r");
if ($file !== false) {
$content = fread($file, filesize("data.txt"));
fclose($file);
} else {
echo "Khong the mo file";
}
?>
Cách kiểm tra này giúp chương trình phân biệt rõ hai trường hợp: file đã được mở và file không thể mở. Khi mở thành công, chương trình mới đọc hoặc ghi dữ liệu rồi gọi fclose().
Cách kiểm tra file đã được đóng an toàn trong PHP
fclose() trả về true nếu thao tác đóng file thành công và false nếu không thể đóng. Vì vậy, khi cần kiểm soát chặt chẽ quá trình xử lý file, bạn có thể kiểm tra kết quả trả về của hàm.
<?php
$file = fopen("data.txt", "r");
if ($file !== false) {
$result = fclose($file);
if ($result) {
echo "Da dong file thanh cong";
}
}
?>
Trong các đoạn mã thông thường, không nhất thiết phải hiển thị thông báo sau mỗi lần đóng file. Quan trọng hơn là chỉ đóng file sau khi mở thành công và không tiếp tục sử dụng file handle sau khi đã gọi fclose().
Nếu một chức năng có nhiều nhánh xử lý, nên thiết kế luồng chương trình sao cho file được đóng ngay sau khi hoàn tất công việc. Cách tổ chức này giúp hạn chế lỗi do sử dụng nhầm file handle và làm cho quá trình xử lý file dễ kiểm tra, bảo trì hơn.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm fclose() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *