Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?

Nếu trang web của bạn chứa thông tin nhạy cảm về thời gian—hoặc ngay cả khi không có—bạn có thể muốn hiển thị lần cuối cùng một tệp được sửa đổi trên trang web. Điều này cung cấp cho người dùng ý tưởng chính xác về mức độ cập nhật của thông tin trên một trang. Bạn có thể tự động lấy thông tin này từ chính tệp đó bằng hàm ​filemtime() PHP

Hàm filemtime() PHP truy xuất dấu thời gian Unix từ tệp. Hàm ngày chuyển đổi thời gian dấu thời gian Unix. Dấu thời gian này cho biết khi tệp được thay đổi lần cuối

Mã ví dụ để hiển thị ngày sửa đổi tệp

Khi bạn sử dụng mã này, hãy thay thế "myfile. txt" bằng tên thật của tệp bạn đang hẹn hò. ​

Các cách sử dụng khác cho hàm Filemtime()

Ngoài việc đánh dấu thời gian cho các bài viết trên web, hàm filemtime() có thể được sử dụng để chọn tất cả các bài viết cũ hơn một thời gian nhất định nhằm mục đích xóa tất cả các bài viết cũ. Nó cũng có thể được sử dụng để sắp xếp các bài báo theo độ tuổi cho các mục đích khác

Chức năng này có thể hữu ích khi xử lý bộ nhớ đệm của trình duyệt. Bạn có thể buộc tải xuống phiên bản sửa đổi của biểu định kiểu hoặc trang bằng hàm filemtime() 

Filemtime có thể được sử dụng để nắm bắt thời gian sửa đổi của một hình ảnh hoặc tệp khác trên một trang web từ xa

Thông tin về hàm Filemtime()

  • Kết quả của hàm filemtime() được lưu vào bộ nhớ cache. Hàm clearstatcache() xóa bộ nhớ đệm
  • Nếu hàm filemtime() bị lỗi, mã sẽ trả về "false. "

Trích dẫn bài viết này

Sự sắp xếp

trích dẫn của bạn

Bradley, Angela. "Giới thiệu về hàm PHP Filemtime(). "ThinkCo. https. //www. suy nghĩ. com/autoally-display-when-file-last-modified-2693936 (truy cập ngày 17 tháng 1 năm 2023)

Tại sao ngày tập tin quan trọng?

Nội dung liên quan. Hàm hệ thống tệp PHP

PHP có một thư viện khổng lồ các hàm FileSystem cho các trường hợp sử dụng khác nhau liên quan đến tệp. Bạn có thể lấy ngày tạo, sửa đổi và truy cập tệp trong PHP và đó là nội dung mà bài viết tập trung vào. Tuy nhiên, các chức năng khác có thể đọc, ghi, tạo và xóa tệp. FuelingPHP bao gồm một số bài viết cần thiết liên quan đến tệp PHP, chẳng hạn – Cách xóa tệp trong PHP

Tuy nhiên, cho dù API tệp tinh vi đến đâu, nó vẫn dựa vào các lệnh gọi hệ thống cơ bản. Vì mọi hệ điều hành triển khai một hệ thống tệp theo cách riêng của nó và đó là lý do tại sao một số lệnh gọi API có thể hoạt động hơi khác nhau trong các hệ điều hành khác nhau – ví dụ:. Windows & Linux

Dù sao, bài báo bao gồm các ghi chú về bất kỳ sự khác biệt nào có thể xảy ra. Vì vậy, những gì chờ đợi cho?

Kịch bản. Đẩy tệp vào kho lưu trữ

Xem xét một kho lưu trữ trực tuyến cho các tệp. Kho lưu trữ này có một tệp chính và những người đóng góp cho tệp đó. Người đóng góp có thể đẩy các thay đổi mới vào tệp chính và những người khác có thể nhận được thông báo về những thay đổi đang được thực hiện. Hãy liệt kê các yêu cầu chức năng này

  • Kho lưu trữ một hoặc nhiều tệp
  • Người dùng có thể tải xuống và thay đổi tệp
  • Người dùng có thể đẩy các thay đổi mới vào kho lưu trữ
  • Kho lưu trữ thông báo cho người dùng về những thay đổi

Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?

Một thách thức trong kiến ​​trúc kho lưu trữ trung tâm như vậy là tính nhất quán. Nếu một người dùng thay đổi, những người khác sẽ có thể cập nhật các bản sao cục bộ của họ cho phù hợp – nếu không, hồ sơ của họ có thể bị cũ. Có rất nhiều cách để thực hiện kiến ​​trúc này, nhưng bài viết này thiên về sử dụng hệ thống tệp hơn

Chúng ta có thể sử dụng mẫu người quan sát-người đăng ký phổ biến để đảm bảo mọi người dùng đều ở trong vòng lặp, nhưng chúng ta cần một trình kích hoạt để bắt đầu quá trình thông báo. Một trình kích hoạt có thể là dấu thời gian của tệp - tạo, sửa đổi và truy cập lần cuối. Ví dụ: bất kỳ thay đổi nào đối với dấu thời gian sửa đổi đều có thể kích hoạt quy trình thông báo

Trước tiên, hãy đảm bảo rằng chúng ta hiểu cách lấy ngày tạo và sửa đổi tệp trong PHP, sau đó chúng ta sẽ ở vị trí tốt hơn để tiếp tục kịch bản này

Cách lấy Ngày tạo tệp trong PHP với filectime()

PHP filectime()  trả về dấu thời gian khi siêu dữ liệu của tệp thay đổi. Sử dụng chức năng này trong Windows sẽ trả về thời gian tạo tệp. Hãy xem một ví dụ để tìm hiểu thêm

$filename = "my-file.txt";
 
if(file_exists($filename))
{
   $creationTimestamp = filectime($filename); //1663093380
   $creationDate = date("d-m-Y h:m:i A", $creationTimestamp);
   
   echo "The file was created on {$creationDate}";
}
 
else
{
   echo "The file {$filename} doesnot exist";
}
 
//Output
//The file was created on 13-09-2022 08:09:23 PM

filectime() trả về dấu thời gian UNIX tạo tệp – số giây từ ngày 1 tháng 1 năm 1970 UTC.  

Theo dòng mã đó, ví dụ gọi đến date() với định dạng và chuỗi dấu thời gian. Hàm xây dựng một ngày từ đó – trong 'm-d-Y h. m. định dạng i A.  

Lưu ý - Thời gian tạo tệp trong Linux

Hầu hết các nhân Linux sẽ không đóng gói thời gian tạo trong siêu dữ liệu tệp. Nó có một sửa đổi và thời gian truy cập, mặc dù. Chúng ta sẽ tìm hiểu cách kiểm tra thời gian sửa đổi tệp trong PHP

Cách lấy Ngày sửa đổi tệp trong PHP với filemtime()

filemtime() trong PHP trả về dấu thời gian được sửa đổi lần cuối trong PHP. Hãy gọi hàm này trên tệp mà chúng ta đã tạo trong ví dụ trước

$filename = "my-file.txt";
 
if(file_exists($filename))
{
   $creationTimestamp = filemtime($filename);
   $modificationDate = date("d-m-Y h:m:i A", $creationTimestamp);
   
   echo "The file was last modified on {$modificationDate}";
}
 
else
{
   echo "The file {$filename} doesnot exist";
}
 
//Output
//The file was last modified on 13-09-2022 08:09:23 PM

Quan sát rằng logic gần như giống nhau ngoại trừ việc chúng ta gọi filemtime(). Hơn nữa, đầu ra là như nhau bởi vì chúng tôi chưa sửa đổi tệp. Hãy thêm một dòng vào tệp

Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?

Mát lạnh. Hãy chạy lại chương trình để xem đầu ra ngay bây giờ

//Output
//The file was last modified on 13-09-2022 09:09:27 PM

thì đấy. Chức năng hoạt động như một nét duyên dáng.  

Có một chức năng tương tự khác cho thời gian truy cập tệp trong PHP. Hãy cùng tìm hiểu điều đó trong phần sau

Cách lấy Ngày truy cập tệp trong PHP với fileatime()

PHP fileatime() trả về thời gian truy cập cuối cùng của tệp. Nó tương tự như hai chức năng cuối cùng về cách sử dụng. Hãy xem chức năng này hoạt động

$filename = "my-file.txt";
 
if(file_exists($filename))
{
   $creationTimestamp = fileatime($filename);
   $accessDate = date("d-m-Y h:m:i A", $creationTimestamp);
   
   echo "The file was last accessed on {$accessDate}";
}
 
else
{
   echo "The file {$filename} does not exist";
}
 
//Output
//The file was last accessed on 13-09-2022 09:09:27 PM

Hoàn hảo. Dấu thời gian truy cập gợi ý rằng chúng tôi đã truy cập tệp lần cuối vào '13-09-2002 09. 09. 27 PM’, đó là thời gian chính xác chúng tôi đã sửa đổi nó. Hãy truy cập lại một lần nữa và xem đầu ra có thay đổi không

//Output
//The file was last accessed on 13-09-2022 at 09:09:35 PM

Vâng, nó làm. Đáng kinh ngạc

Các hàm hệ thống tệp PHP có một chức năng thú vị khác trả về một mảng tất cả thông tin về một tệp, bao gồm thời gian tạo, sửa đổi và truy cập. Hãy xem lại điều đó

Cách nhận ngày tạo, sửa đổi và truy cập tệp trong PHP bằng stat()

PHP stat() trả về một mảng bao gồm thông tin về một tệp. Hãy xem chức năng này trong ví dụ sau

$file_stats = stat('my-file.txt');
 
if(!$file_stats) {
   echo 'Failed get file information';
}
 
else {
 
   echo 'The file was created on: '.date('d-m-Y h:m:i A',$file_stats["ctime"]).PHP_EOL; //Equivalent of filectime()
 
   echo 'The file was last modified on: '.date('d-m-Y h:m:i A',$file_stats["mtime"]).PHP_EOL; //Equivalent of filemtime()
 
   echo 'The file was last accessed on: '.date('d-m-Y h:m:i A',$file_stats["atime"]).PHP_EOL; //Equivalent of fileatime()
 
}
/*
OUTPUT
The file was created on: 13-09-2022 08:09:23 PM
The file was last modified on: 13-09-2022 09:09:35 PM
The file was last accessed on: 13-09-2022 09:09:36 PM
*/

Đáng kinh ngạc. Với stat(), chúng tôi lấy thông tin tệp trong một mảng. Để xem danh sách đầy đủ các số liệu thống kê, hãy cân nhắc đọc tài liệu chính thức

Bây giờ, khi chúng tôi cảm thấy thoải mái với ngày tháng của tệp PHP, đã đến lúc tiếp tục với kịch bản Kho lưu trữ tệp của chúng tôi

Thiết kế kho lưu trữ tệp trong PHP – Một khái niệm

Theo dõi kịch bản ở đầu bài viết, chúng tôi đã thảo luận một số gợi ý quan trọng. Để có cái nhìn toàn cảnh về thiết kế của ứng dụng, chúng ta sẽ sử dụng sơ đồ lớp để tạo khung cho các khối xây dựng quan trọng và cách chúng khớp với nhau

Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?

Các thực thể Người dùng và Kho lưu trữ tự giải thích và đại diện cho hai thành phần quan trọng nhất của kho lưu trữ tệp. Kho lưu trữ bao gồm một mảng người dùng và sử dụng chức năng thông báo để gửi thông tin cập nhật cho người dùng về bất kỳ thay đổi nào đối với tệp trong kho lưu trữ

Lớp Sự kiện lắng nghe sự thay đổi đó và kích hoạt một loạt thông báo cho người dùng. Vì vậy, thay đổi sẽ kích hoạt Sự kiện là gì?

Vì đây là một ứng dụng giả định nên chúng tôi sẽ không cung cấp bất kỳ mã nguồn nào, nhưng đây là một ví dụ sơ bộ về ý tưởng này

class Event {
 
   public function trigger($users) {
      foreach($users as $user) {
         console.log("{$user} has been notified");
      }
   }
}
 
//The notify function calls the trigger function on event object.
function notify($event, $users) {
   $event->trigger($users);
}
 
 
$users = ["User1", "User2", "User3", "User4"];
 
$fileName = "my-file.txt";
 
if(file_exists("my-file.txt")) {
 
   while($programRunning) {
 
      $lastModified = filemtime("my-file.txt");
 
       $currentModifiedTime = filemtime("my-file.txt");
 
      if($currentModifiedTime - $lastModified > 0) {
         $event = new Event();
         notify($event, $users);
      }
 
   }
   
}

Ví dụ trên chỉ là một mã giả của toàn bộ luồng chức năng thông báo. Lớp Sự kiện có một phương thức kích hoạt mong đợi một mảng người dùng và lặp lại chúng (việc triển khai thực tế sẽ gửi Email tới người dùng)

Chúng tôi cũng đã chế nhạo phương thức thông báo. Chương trình chính so sánh lần sửa đổi cuối cùng với thời gian sửa đổi gần đây và đưa ra lệnh gọi notify()

Bây giờ, việc triển khai này không hoàn hảo, nhưng nó củng cố ý tưởng về chức năng là gì và cũng biểu thị việc sử dụng ngày và giờ của tệp trong PHP

Mát lạnh. Đoán đó là nó;

Phần kết luận

Gói (lại

Bài viết này đề cập đến ngày và giờ của tệp PHP khi tạo, sửa đổi và truy cập. Các ví dụ trong bài viết sử dụng các hàm hệ thống tệp PHP – filectime, fiemtime và fileatime cho thời gian tạo, sửa đổi và truy cập

Sau đây, phần hàm stat() sẽ làm sáng tỏ cách truy xuất thông tin tệp trong một mảng thay vì gọi các hàm này một cách độc lập. Cuối cùng, bài viết kết thúc với ứng dụng Kho lưu trữ tệp giả định dựa trên thời gian sửa đổi tệp để thông báo cho người dùng về các thay đổi tệp

Hy vọng bạn thích bài viết. Hãy theo dõi để biết thêm tại FuelingPHP

Các lớp và chức năng được đề cập

filectime – (PHP 4, PHP 5, PHP 7, PHP 8) Hàm này trả về thời gian thay đổi inode của tệp – khi siêu dữ liệu tệp thay đổi

filemtime – (PHP 4, PHP 5, PHP 7, PHP 8) Hàm hệ thống tệp này trả về thời gian sửa đổi cuối cùng của tệp

fileatime – (PHP 4, PHP 5, PHP 7, PHP 8) Hàm hệ thống tệp PHP này trả về thời gian truy cập cuối cùng của tệp

stat – (PHP 4, PHP 5, PHP 7, PHP 8) Hàm này trả về một mảng thông tin liên quan đến tệp

file_exists – (PHP 4, PHP 5, PHP 7, PHP 8) Hàm này kiểm tra xem một tệp có tồn tại không

Bạn muốn tìm hiểu thêm về PHP?

Chúng tôi có nhiều bài viết thú vị liên quan đến PHP. Bạn có thể khám phá những điều này để tìm hiểu thêm về PHP

  • Cách xác thực ngày tháng trong PHP
  • Cách so sánh ngày tháng trong PHP
  • Chạy một yêu cầu GET cURL trong PHP
Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?

Bài viết liên quan

Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?
Cách xóa tệp trong PHP nếu tệp đó tồn tại cùng với mã ví dụ vào năm 2023
Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?
Tải lên và lưu tệp PHP – Tải lên tập lệnh PHP của tệp hình ảnh
Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?
PHP File Upload & Save – Upload a CSV File with Code Examples
Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?
Master PHP DateTime Format Fast With 2023 Code Examples


  • ← Cách khởi tạo mảng rỗng trong PHP
  • Xác thực ngày trong PHP như một chuyên gia với các ví dụ về mã vào năm 2023 →

Viết mã tốt hơn nhanh hơn

Nhấp vào đây để nhận các bí mật hàng đầu 'Trở thành Rockstar PHP Dev trong 7 ngày' của chúng tôi được gửi đến hộp thư đến của bạn

đăng ký

Làm cách nào tôi có thể lấy thông tin sửa đổi cuối cùng của tệp bằng PHP?

Stephen Phép Lạ

Chào. Tôi hy vọng bạn thích bài viết này. Tôi đã phát triển các trang web và phần mềm một cách chuyên nghiệp trong hơn 20 năm. Tôi bắt đầu FuelingPHP như một cách để đền đáp lại cộng đồng nguồn mở đã giúp tôi có thể sống thoải mái khi xây dựng những thứ tôi yêu thích

Chức năng nào được sử dụng để có được thời gian sửa đổi cuối cùng?

Sử dụng chức năng getlastmod() . Hàm getlastmod() được sử dụng để lấy thời gian sửa đổi cuối cùng của trang hiện tại.

Làm thế nào bạn sẽ nhận được một thông tin tập tin trong PHP?

The file_get_contents() đọc một tệp thành một chuỗi. Hàm này là cách ưa thích để đọc nội dung của tệp thành một chuỗi. Nó sẽ sử dụng các kỹ thuật ánh xạ bộ nhớ, nếu điều này được máy chủ hỗ trợ, để nâng cao hiệu suất.

Filemtime trong PHP là gì?

filemtime(string $filename ). int. sai. Hàm này trả về thời điểm các khối dữ liệu của tệp được ghi vào , nghĩa là thời điểm nội dung của tệp bị thay đổi.

Chức năng nào được sử dụng để biết phần cuối của tệp trong PHP?

Hàm feof() kiểm tra xem một tệp đang mở đã đạt đến "cuối tệp" (EOF) chưa. Mẹo. Hàm này rất hữu ích để lặp qua dữ liệu có độ dài không xác định.