Hàm filesize() trong PHP
Trần Thị Vân
- 1187
- 06/08/2025
Chức năng của Hàm filesize() trong PHP
Hàm filesize() trong PHP dùng để lấy kích thước hiện tại của một file, hàm trả về kích thước đơn vị byte.
Cú pháp của Hàm filesize() trong PHP
$kích_thước_file = filesize("đường_dẫn_file");
đường_dẫn_file: Đường dẫn tới file cần xem kích thước (Ví dụ: filetext.txt)
$kích_thước_file: Kết quả trả về kích thước file tính bằng đơn vị byte.
Code Hàm filesize() trong PHP
<?php
$filename = "filetext.txt";
$ktfile = filesize($filename);
echo $ktfile." byte";
?>
Kết quả:
467 byte
Những lỗi thường gặp khi sử dụng hàm filesize() trong PHP
Khi sử dụng filesize(), kết quả không phải lúc nào cũng là một số nguyên như mong đợi. Các vấn đề thường xuất phát từ đường dẫn file, quyền truy cập hoặc việc file đã thay đổi nhưng PHP vẫn sử dụng thông tin đã được lưu trong bộ nhớ đệm.
Hàm filesize() trả về false khi nào?
Hàm filesize() có thể trả về false nếu PHP không thể lấy kích thước của file được chỉ định. Trường hợp phổ biến nhất là đường dẫn không đúng hoặc file không tồn tại tại vị trí đó.
Do đó, không nên sử dụng trực tiếp kết quả của hàm để tính toán hoặc hiển thị mà không kiểm tra trước. Cách an toàn là xác nhận file tồn tại và kiểm tra kết quả trả về:
<?php
$file = "uploads/document.pdf";
if (file_exists($file)) {
$size = filesize($file);
if ($size !== false) {
echo "Kích thước file: " . $size . " byte";
}
}
?>
Ngoài file không tồn tại, lỗi còn có thể xảy ra khi PHP không có quyền truy cập file hoặc đường dẫn trỏ đến một đối tượng không thể đọc thông tin kích thước. Việc kiểm tra kết quả trả về giúp chương trình tránh tiếp tục xử lý một giá trị không hợp lệ.
Vì sao filesize() trả về kích thước file không chính xác?
Một nguyên nhân đáng chú ý là stat cache của PHP. Thông tin về file có thể được PHP lưu tạm, vì vậy nếu file vừa được ghi thêm dữ liệu, thay đổi kích thước hoặc thay thế trong cùng một quá trình xử lý, kết quả của filesize() có thể chưa phản ánh trạng thái mới nhất.
Trong trường hợp này, có thể sử dụng clearstatcache() trước khi gọi lại hàm:
<?php
$file = "uploads/document.txt";
clearstatcache(true, $file);
$size = filesize($file);
if ($size !== false) {
echo $size . " byte";
}
?>
Việc xóa cache đặc biệt hữu ích khi chương trình vừa tạo, ghi, sửa hoặc thay đổi file rồi ngay sau đó cần đọc lại thông tin kích thước. Tuy nhiên, không nên gọi clearstatcache() một cách tùy tiện trong mọi trường hợp; chỉ nên sử dụng khi quy trình xử lý thực sự có khả năng bị ảnh hưởng bởi thông tin file đã được cache.
Cách xử lý khi file không tồn tại hoặc không thể truy cập
Trước khi lấy kích thước, nên kiểm tra đường dẫn và trạng thái của file. Điều này giúp phân biệt trường hợp file thực sự không tồn tại với trường hợp PHP không thể truy cập file.
<?php
$file = "uploads/image.jpg";
if (!file_exists($file)) {
echo "File không tồn tại.";
} elseif (!is_readable($file)) {
echo "Không thể đọc file.";
} else {
$size = filesize($file);
if ($size === false) {
echo "Không thể lấy kích thước file.";
} else {
echo "Kích thước: " . $size . " byte";
}
}
?>
Cách kiểm tra này phù hợp với các chức năng như hiển thị dung lượng file tải lên, kiểm tra tài liệu trước khi xử lý hoặc tạo thông tin metadata cho file. Quan trọng nhất là không nên mặc định rằng đường dẫn hợp lệ thì filesize() chắc chắn trả về kích thước.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm filesize() 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 *