Hàm stat() trong PHP
Trần Thị Vân
- 1391
- 10/08/2025
Chức năng của Hàm stat() trong PHP
Hàm stat() trong PHP dùng để lấy rất nhiều thông tin về tập tin, bao gồm: kích thước file, thời gian chỉnh sửa cuối cùng,...
Cú pháp của Hàm stat() trong PHP
$biến_mảng = stat("đường_dẫn_đến_file");
đường_dẫn_đến_file: Đường dẫn đến file.
$biến_mảng: Trả thông tin của file vào biến mảng.
Code Hàm stat() trong PHP
<?php
// Đường dẫn đến file
$filenguon = "thumuctest/test.txt";
// Trả về mảng chứa các thông tin về file
$mang = stat($filenguon);
print_r($mang);
// Kết quả: Array ( [0] => 64769 [1] => 789512 [2] => 33188 [3] => 1 [4] => 1094 [5] => 1097 [6] => 0 [7] => 22 [8] => 1754740910 [9] => 1754740910 [10] => 1754827310 [11] => 4096 [12] => 8 [dev] => 64769 [ino] => 789512 [mode] => 33188 [nlink] => 1 [uid] => 1094 [gid] => 1097 [rdev] => 0 [size] => 22 [atime] => 1754740910 [mtime] => 1754740910 [ctime] => 1754827310 [blksize] => 4096 [blocks] => 8 )
// In từng thông tin về file
echo "<br>";
echo "Kích thước tệp: ".$mang['size']." byte <br>";
// Kết quả: 22 byte
echo "Thời gian sửa đổi cuối cùng: ".date("Y-m-d H:i:s", $mang['mtime'])."<br>";
// Kết quả: 2025-08-09 19:01:50
echo "Thời gian truy cập cuối cùng: ".date("Y-m-d H:i:s", $mang['atime'])."<br>";
// Kết quả: 2025-08-09 19:01:50
?>
Kết quả:
Array ( [0] => 64769 [1] => 789512 [2] => 33188 [3] => 1 [4] => 1094 [5] => 1097 [6] => 0 [7] => 22 [8] => 1754740910 [9] => 1754740910 [10] => 1754827310 [11] => 4096 [12] => 8 [dev] => 64769 [ino] => 789512 [mode] => 33188 [nlink] => 1 [uid] => 1094 [gid] => 1097 [rdev] => 0 [size] => 22 [atime] => 1754740910 [mtime] => 1754740910 [ctime] => 1754827310 [blksize] => 4096 [blocks] => 8 )
Kích thước tệp: 22 byte
Thời gian sửa đổi cuối cùng: 2025-08-09 19:01:50
Thời gian truy cập cuối cùng: 2025-08-09 19:01:50
Hàm stat() trong PHP cung cấp các thông tin
(dev): Số thiết bị.
(ino): Số inode.
(mode): Chế độ bảo vệ (quyền truy cập).
(nlink): Số liên kết cứng.
(uid): ID người dùng của chủ sở hữu.
(gid): ID nhóm của chủ sở hữu.
(rdev): Loại thiết bị (nếu là thiết bị đặc biệt).
(size): Kích thước tệp tính bằng byte.
(atime): Thời gian truy cập cuối cùng.
(mtime): Thời gian sửa đổi cuối cùng.
(ctime): Thời gian thay đổi trạng thái cuối cùng.
(blksize): Kích thước khối hệ thống tệp.
(blocks): Số khối đã phân bổ.
Các thông tin quan trọng khi sử dụng stat() trong PHP
Hàm stat() không chỉ dùng để kiểm tra một tập tin có tồn tại hay không. Hàm này trả về một tập hợp thông tin liên quan đến tập tin hoặc thư mục, từ kích thước, thời gian truy cập đến quyền và thông tin người sở hữu. Nhờ đó, lập trình viên có thể lấy nhiều dữ liệu liên quan trong một lần gọi hàm thay vì phải sử dụng từng hàm riêng lẻ.
Kích thước tập tin với stat()
Trong kết quả trả về của stat(), phần tử size cho biết kích thước của tập tin tính theo byte. Giá trị này hữu ích khi cần kiểm tra dung lượng trước khi xử lý, hiển thị kích thước hoặc xây dựng chức năng quản lý tập tin.
<?php
$info = stat("document.txt");
echo "Kích thước: " . $info["size"] . " byte";
?>
Cách tiếp cận này phù hợp khi chương trình cần nhiều thuộc tính khác của cùng một tập tin. Nếu chỉ cần lấy kích thước, filesize() thường ngắn gọn và dễ đọc hơn.
Thời gian truy cập và chỉnh sửa tập tin
Kết quả của stat() chứa các mốc thời gian quan trọng như thời điểm truy cập gần nhất và thời điểm nội dung được thay đổi. Những dữ liệu này có thể được dùng để xác định tập tin đã được sử dụng hoặc cập nhật khi nào.
<?php
$info = stat("document.txt");
echo "Truy cập: " . date("d/m/Y H:i:s", $info["atime"]);
echo "Thay đổi nội dung: " . date("d/m/Y H:i:s", $info["mtime"]);
?>
Giá trị thời gian được trả về dưới dạng timestamp Unix, vì vậy cần chuyển đổi sang định dạng ngày giờ phù hợp trước khi hiển thị cho người dùng. Trong đó, mtime đặc biệt hữu ích khi cần kiểm tra lần cuối nội dung tập tin được cập nhật.
Quyền truy cập và thông tin người sở hữu
Ngoài dữ liệu về kích thước và thời gian, stat() còn cung cấp thông tin liên quan đến quyền truy cập và chủ sở hữu của tập tin. Các trường như mode, uid và gid có thể hỗ trợ việc kiểm tra trạng thái tập tin trên hệ thống.
Thông tin mode phản ánh các thuộc tính quyền của tập tin, còn uid và gid lần lượt liên quan đến người dùng và nhóm sở hữu. Những dữ liệu này thường hữu ích hơn trong các ứng dụng PHP chạy trên máy chủ Linux hoặc Unix khi cần kiểm tra quyền trước khi thực hiện thao tác với tập tin.
Cần lưu ý rằng quyền thực tế mà tiến trình PHP có thể sử dụng còn phụ thuộc vào tài khoản chạy PHP, hệ điều hành và cơ chế phân quyền của máy chủ. Vì vậy, không nên chỉ dựa vào một giá trị trong kết quả stat() để kết luận rằng tập tin chắc chắn có thể đọc hoặc ghi.
Phân biệt stat() với các hàm lấy thông tin file khác
Điểm khác biệt chính của stat() là khả năng trả về nhiều thuộc tính của cùng một tập tin trong một cấu trúc dữ liệu. Trong khi đó, các hàm như filesize(), filemtime() hoặc fileperms() tập trung vào một loại thông tin cụ thể.
Nếu chỉ cần một giá trị, nên ưu tiên hàm chuyên biệt để mã nguồn ngắn gọn và dễ hiểu. Ngược lại, khi chương trình cần đồng thời kích thước, thời gian, quyền hoặc thông tin sở hữu, stat() sẽ phù hợp hơn vì có thể lấy nhiều dữ liệu trong cùng một lần xử lý.
| Hàm | Mục đích chính |
|---|---|
| stat() | Lấy tập hợp nhiều thông tin về tập tin hoặc thư mục |
| filesize() | Lấy kích thước tập tin |
| filemtime() | Lấy thời điểm nội dung tập tin được sửa đổi |
| fileperms() | Lấy thông tin về quyền của tập tin |
| fileowner() | Lấy mã người dùng sở hữu tập tin |
Do đó, lựa chọn hàm nên dựa trên lượng thông tin mà chương trình thực sự cần. Việc dùng stat() cho một tác vụ chỉ cần một giá trị không nhất thiết làm mã nguồn tốt hơn; nhưng khi cần tổng hợp nhiều thuộc tính của cùng một đối tượng, đây là lựa chọn đáng cân nhắc.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm stat() 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 *