Использую редактор в связке с AJAX-загрузкой файлов. Думаю, как правильно реализовать удаление ненужных файлов (например, удалённых из HTML-кода при редактировании). Планирую создать специальную таблицу, при загрузке записывать туда путь файла и айдишник публикации, а после редактирования проверять наличие пути файла в коде. Но что можно придумать при создании? И как быть в тех случаях, когда пользователь закрыл окно, не сохранив изменения. Я так понимаю, с помощью PHP это не отследить?
UPD: Можно сканить таблицу с файлами при отображении публикации. Но это плохой вариант.
Автоматическое удаление файлов
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: Автоматическое удаление файлов
По крону удаляйте.
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: Автоматическое удаление файлов
Думал об этом, но не будет ли слишком большой нагрузки на сервер? Проходить всю таблицу и проверять наличие файлов в папке. Допустим, при тысяче записей.
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Автоматическое удаление файлов
по крону в воскресенье в 5 утра ))
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.
Re: Автоматическое удаление файлов
В чем заключается большая нагрузка? 1 запрос, цикл с file_exists и всё)
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: Автоматическое удаление файлов
Записывать каждую загрузку в базу. И если файл не существует, то удалять публикацию?ifelse писал(а):В чем заключается большая нагрузка? 1 запрос, цикл с file_exists и всё)
Мне нужно наоборот, если в публикациях нет упоминания о файлах, то оставлять все файлы, о которых такие упоминания есть, остальные - в корзину.
Re: Автоматическое удаление файлов
Если честно чуток не понимаю эту связь:
Ваша логика же, как я понимаю, такая:
- При Создании\редактировании статьи вы проверяете наличие файлов в статье. Если они есть\нет то добавляете, или удаляете записи из таблицы. Таким образом в вспомогательной таблице у вас всегда актуальные данные.
- Теперь по крону выбираем все записи таблицы, и удаляем те файлы которых там нет.
Хотя можно и без вспомогательной таблицы, чтобы не тратить зря ресурсы при создании\редактировании статьи.
По крону запускаем скрипт который будет делать следующее:
- Выбирает все текстовые поля статей из БД.
- Парсит контент, и сохраняет в "temporary" таблицу все адреса внутренних файлов которые он нашел. (можно и без сохранения в таблице)
- Выбирает из временной таблице все файлы, и удаляет по проверке мусор.
иJoseph Jevelin писал(а):Планирую создать специальную таблицу, при загрузке записывать туда путь файла и айдишник публикации, а после редактирования проверять наличие пути файла в коде.
Если вы планируете создавать для каждого файла отдельную запись в базе, то выше вам посоветовали оптимальный вариант.Joseph Jevelin писал(а):И если файл не существует, то удалять публикацию?
Ваша логика же, как я понимаю, такая:
- При Создании\редактировании статьи вы проверяете наличие файлов в статье. Если они есть\нет то добавляете, или удаляете записи из таблицы. Таким образом в вспомогательной таблице у вас всегда актуальные данные.
- Теперь по крону выбираем все записи таблицы, и удаляем те файлы которых там нет.
Хотя можно и без вспомогательной таблицы, чтобы не тратить зря ресурсы при создании\редактировании статьи.
По крону запускаем скрипт который будет делать следующее:
- Выбирает все текстовые поля статей из БД.
- Парсит контент, и сохраняет в "temporary" таблицу все адреса внутренних файлов которые он нашел. (можно и без сохранения в таблице)
- Выбирает из временной таблице все файлы, и удаляет по проверке мусор.
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: Автоматическое удаление файлов
Вторая цитата моего сообщения - это, как я понял, логика работы с функцией, которую предложил ifelse. Мне так не нужно.
В общем, думаю, понял. Наилучший вариант - CronTab. Несмотря на то, что нагрузка на сервер в определённый момент возрастёт, так как проверятся будут не только публикации. А иной раз, выборка с тысячами записями будет бессмысленна, ибо лишних файлов на сервере не будет существовать. Поставлю запуск скрипта, действительно, в воскресенье в пять утра) Благодарю откликнувшихся)
В общем, думаю, понял. Наилучший вариант - CronTab. Несмотря на то, что нагрузка на сервер в определённый момент возрастёт, так как проверятся будут не только публикации. А иной раз, выборка с тысячами записями будет бессмысленна, ибо лишних файлов на сервере не будет существовать. Поставлю запуск скрипта, действительно, в воскресенье в пять утра) Благодарю откликнувшихся)