Mục đích: code này dùng để quét các file resize từ một file gốc và xoá khỏi thư mục.
Chúng ta thường dùng lệnh scandir() để quét tìm danh sách tập tin (file) trong thư mục nhưng nó chỉ hiệu quả khi áp dụng ở các thư mục có số lượng file nhỏ. Nếu trường hợp số lượng file lớn và nhiều thì ta phải sử dụng bộ lọc cho kết quả nhanh nhất để tăng hiệu năng và giảm tải hao tổn tài nguyên trên website.
scandir()
Dưới đây là một cách nhỏ để sử dụng cho hiệu quả:
Ví dụ trong thư mục chứa có các file như sau:
1506763973-filename-2017-09-30-at-11_13_39-150x150.png 1506763973-filename-2017-09-30-at-11_13_39.png 1506763973-filename-2017-09-30-at-11_13_39-250x150.png
và nằm trong thư mục path/upload/image, khi đó, nếu dùng scandir() thì ta sẽ có cả 3 file trên trong cùng 1 array().
path/upload/image
Tuy nhiên, thay vì sử dụng scandir(), chúng ta có một phương pháp khác hiệu quả hơn đó là sử dụng glob(), với phương thức dùng như sau:
glob()
// Lấy thông tin của file 1506763973-filename-2017-09-30-at-11_13_39.png $pathinfo = json_decode(json_encode(pathinfo('path/upload/image/1506763973-filename-2017-09-30-at-11_13_39.png'))); // Tìm các file cùng tên và xoá khỏi thư mục foreach (glob($pathinfo->dirname . '/' . $pathinfo->filename . '*' . $pathinfo->extension) as $filename) { (file_exists($filename) ? unlink($filename) : FALSE); }
Giải thích:
$pathinfo->dirname
$pathinfo->filename
$pathinfo->extension
path/upload/image/1506763973-filename-2017-09-30-at-11_13_39.png
path/upload/image/1506763973-filename-2017-09-30-at-11_13_39-150x150.png
path/upload/image/1506763973-filename-2017-09-30-at-11_13_39-250x150.png
Khi lập lệnh tìm như trên, thì hàm glob() sẽ hiểu là ta đang tìm các file có tên giống với cấu trúc sau: 1506763973-filename-2017-09-30-at-11_13_39*png trong thư mục path/upload/image. Vậy những tập tin nào có 1 phần tên trùng với 1506763973-filename-2017-09-30-at-11_13_39 và có đuôi định dạng là png sẽ được xoá khỏi thư mục.
1506763973-filename-2017-09-30-at-11_13_39*png
1506763973-filename-2017-09-30-at-11_13_39
png
Ngoài ra chúng ta cũng có thể áp dụng cách này để xoá các file có trong thư mục.
Chúc các bạn thao tác thành công. Nếu có bất kỳ thắc mắc nào, hãy để lại một bình luận, chúng tôi sẽ giải đáp cho bạn ngay khi chúng tôi online.