PHP xóa thư mục theo cách đệ quy

Để tạo thêm không gian trống trong máy chủ web, sẽ tốt hơn nếu chúng ta xóa các tệp và thư mục không cần thiết. Dọn dẹp các tệp và thư mục không cần thiết hết lần này đến lần khác theo cách thủ công là một công việc tẻ nhạt

PHP có lớp RecursiveDirectoryIterator cung cấp giao diện để lặp lại đệ quy trên các thư mục hệ thống tệp. Và một lớp khác, RecursiveIteratorIterator được sử dụng để lặp qua các trình lặp đệ quy

Sử dụng hai lớp này, chúng ta có thể nhanh chóng tìm thấy tất cả các tệp và thư mục (đệ quy) trong một thư mục nhất định

Hãy viết tập lệnh PHP để xóa từng tệp và thư mục không sử dụng cũ hơn số ngày đã cho

Đoạn mã sau lặp lại đệ quy bên trong thư mục hình ảnh để lấy tất cả các tệp và thư mục và xóa tệp và thư mục cũ hơn 5 ngày

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$dir = 'images/';

$now   = thời gian();

$dir = new \RecursiveDirectoryIterator($dir, \FilesystemIterator::BỎ QUA_DOTS);

$dir = new \RecursiveIteratorIterator($dir,\RecursiveIteratorIterator::CHILD_FIRST);

$deleteFiles = [];

$message = "Không có tệp nào để xóa";

if($dir) {

    foreach ($dir as $file) {

       /* So sánh thời gian hiện tại với thời điểm tệp được tạo */

        if ($file && $now - filemtime

array_push($deleteFiles, $file);

            $file - >isDir() ? rmdir($file) : hủy liên kết($file);

            $message = "Tất cả các tệp sau đã bị xóa. """"""";

        }

    }

}khác {

    

}

 

echo $message;

if($deleteFiles){

var_dump(implode(',$deleteFiles));

}

Chúng tôi có thể thay đổi tên thư mục và số ngày, đồng thời thêm tập lệnh PHP đã nói ở trên vào CRON hoặc chạy tập lệnh theo cách thủ công

Để xóa tất cả các tệp và thư mục bên trong thư mục,  hãy xóa nếu điều kiện so sánh thời gian hiện tại với thời điểm tệp/thư mục được tạo

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

$imageFolder = 'images/';

$now   = thời gian();

$dir = $imageFolder;

$dir = new \RecursiveDirectoryIterator($dir, \FilesystemIterator::BỎ QUA_DOTS);

$dir = new \RecursiveIteratorIterator($dir,\RecursiveIteratorIterator::CHILD_FIRST);

 

$deleteFiles = [];

$message = "Không có tệp nào để xóa";

if($dir) {

    foreach ($dir as $file) {

array_push($deleteFiles, $file);

$file - >isDir() ? rmdir($file) : hủy liên kết($file);

$message = "Tất cả các tệp sau đây đã bị xóa. """""""""";

    }

}

echo $message;

if($deleteFiles){

    var_dump(implode('
'
,$deleteFiles));

}

Mã xóa tệp và thư mục đệ quy đặc biệt hữu ích khi các tệp và thư mục bên trong thư mục nhất định được cập nhật thường xuyên

Làm cách nào để xóa một thư mục theo cách đệ quy trong PHP?

Xóa tất cả các tệp và thư mục con trong một thư mục. Để xóa tất cả các tệp và thư mục trong tất cả các thư mục con, chúng ta có thể sử dụng đệ quy. Dưới đây là một ví dụ về hàm PHP đệ quy xóa mọi tệp và thư mục trong một thư mục đã chỉ định. // Nếu là thư mục. deleteAll( 'temporary_files' );

Làm cách nào để xóa thư mục bằng PHP?

Hàm rmdir() trong PHP là một hàm có sẵn dùng để xóa một thư mục trống . Thư mục bắt buộc phải trống và nó phải có các quyền liên quan được yêu cầu để xóa thư mục.

Làm cách nào để tạo và xóa một thư mục trong PHP?

PHP tạo & xóa thư mục . Mkdir(*/temp/sample*, 0777); Đang xóa thư mục. rmdir() của PHP có thể được sử dụng để xóa các thư mục.

Làm cách nào để xóa tệp trong PHP?

Hàm unlink() xóa tệp.