Эффективный способ удаления файлов с сервера PHP - PullRequest
0 голосов
/ 27 декабря 2018

Итак, я пишу скрипт для удаления изображений с моего сервера.В основном у меня есть таблица в моей базе данных, которая содержит список зданий, и у каждого здания есть несколько изображений, связанных с id.Я сохраняю свои изображения на сервере в одной папке, и каждое изображение имеет следующий формат именования: buildingID_imagename.jpg.Например, если у меня есть здание с id = 23, мои изображения в моей папке будут выглядеть как 23_imagename1.jpg, 23_imagename2.jpg и т. Д.

Теперь я знаю, как удалить изображениеиспользуя PHP с помощью функции unlink.Однако, чтобы удалить все изображения, мне нужно проверить каждое имя файла по одному, выполнить манипуляцию с разделенной строкой, проверить идентификатор и затем удалить.Проблема возникает, когда у меня есть 10000 изображений в этой папке.Это становится дорогой задачей, хотя это будет работать.

Мой вопрос, есть ли простой способ проверить имя изображения и удалить его из папки?

Спасибо

РЕДАКТИРОВАТЬ После ввода этого,Я просто подумал об одном возможном пути.Получение всех ссылок на изображения из моей таблицы базы данных в массив, цикл по нему и удаление только тех.Это был бы хороший способ сделать это?Конечно, после того, как я помещаю изображения в массив, я также удаляю их из таблицы.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Вы также можете использовать

<? array_map ('unlink',glob('23_imagename*.jpg')); ?> // this example deletes all files with .jpg extension that starts with 23_imagename

С помощью функции glob вы можете применять регулярные выражения для эффективного поиска файлов, которые вы хотите удалить

http://php.net/manual/en/function.glob.php

0 голосов
/ 27 декабря 2018

Выполните итерацию по набору данных, проверьте, существует ли файл, и удалите файл.

Возможно, запустите его как задание cron в случае, если вы думаете, что в этой операции могут быть тысячи файлов.

if(file_exists($fileName)){
    unlink($fileName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...