![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Доброе утро. Не знаю где лучше было бы разместить этот вопрос, он довольно общего характера. Но посколько в конечном счете реализация решения будет на PHP, решил написать здесь.
А вопрос следующий - есть форма для загрузки текстовых строк и картинок на сервер. При этом картинки грузятся на сервер еще на стадии заполнения формы - то есть человек нажимает на кнопку, вбирает файл, картинка через AJAX запрос загружается, создается ее мелкая копия, которая отправляется пользователю и он видит результат загрузки. И лишь когда все каритнки загружены, поля заполнены, пользователь нажимает кнопку и в базе создается запись с информацией полученной из текстовых полей и ссылок на файлы с картинками Скрипты и HTML разметка написаны, все работает, и в данный момент мне хочется предусмотреть нештатную ситуацию - когда пользователь загрузил картинку и забил на все. В результате записи в базе данных нет, а во временной папке невостребованные картинки. Нужно как-то определить, что они являются мусором и удалить их. На ум приходят 3 варианта: 1. Чистить папку вручную. 2. Чистить папку по расписанию. 3. Вставить кусок кода, который при каждом запуске скрипта (скрипта загрузки) проверяет содержимое папки, сравнивает дату создания файлов с текущим времени и если они старые, удаляет. В принципе все это рабоать будет, ено каждый из вариантов - в какой-то степени изврат. Мне хотелось бы знать, может быть есть какое-то более культурное решение, ведь предварительная загрузка изображений в настоящее время широко используется, я не придумаол ничего нового. Может быть есть способ вставлять уменьшенную копию картинки в страницу не отправляя ее на сервер? Если делать все локально, без Apache, то работать будет - выбрал картинку, получил ее путь, изменил srс в img, но если HTML страничка загружена из интернета ссылки на диск не работают. В общем, кто что думает? |
|||
|
||||
| Vardoulacha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 11.8.2005 Репутация: 7 Всего: 8 |
По моему вариант 2 клевый и не затратный, чистить по крону раз в сутки и делов то, а главное быстро и просто. Надо исходить из задачи, если сервис небольшой, то затраты ресурсов на изучение папки будут минимальны.
Всегда можно будет в будущем придумать более элегантное решение. А так надо запускать скорее, а там может оказаться что это и не нужно никому )) Это сообщение отредактировал(а) Vardoulacha - 22.10.2014, 08:26 |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Vardoulacha,
А если в 3 часа ночи кто-то захочет залить картинки, а тут крон. Помимо крона нужно еще и проверку времени создания файлов запускать. Так что наверное все-таки третий вариант. Да, действительно. В этом случае частота проверок будет оптимальна, и объем работы по чистке минимален - ведь при открытии страниыц предварительной загрузки в папке мы будем иметь мусор, оставшийся только от последнего предыдущего пользователя. А если их месяцами не будет - то и мусора не будет много и нужда заглядывать в папку каждый день отпадет. Понимаете, вопрос был с контекстом "как фактически делают", а не "как же сделать, чтоб заработало" |
|||
|
||||
| s0lman |
|
|||
|
Белый и лохматый ![]() ![]() Профиль Группа: Участник Сообщений: 637 Регистрация: 1.11.2007 Где: Ukraine Репутация: 9 Всего: 29 |
имхо, это в корне неправильно. На этом шаге следует создать временную запись, а далее тем же кроном удалять картинки с вышедшим сроком давности (созданы больше суток назад, к примеру) -------------------- Когда я уже выучусь на волшебника? :( |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Зачем? Практический смысл в этой записи? И на каком этапе ее создавать? При клике на ссылку "добавить статью" ? То мы папку засоряем мусором, а вы предлагаете кидать мусор еще и в базу даных. |
|||
|
||||
| s0lman |
|
||||||||
|
Белый и лохматый ![]() ![]() Профиль Группа: Участник Сообщений: 637 Регистрация: 1.11.2007 Где: Ukraine Репутация: 9 Всего: 29 |
Момент загрузки изображения запоминается в базе, т.е. не происходит никаких незаметных действий. Это исключит сценарий
, то бишь
только работа с базой всяко выгоднее, чем файловые операции.
В вашем случае - сразу после загрузки файла посредством AJAX .
Ничто не мешает с базы удалить/обновить запись, но будет легко установить судьбу записи для данного файла (была создана, или же нет). -------------------- Когда я уже выучусь на волшебника? :( |
||||||||
|
|||||||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Может я не вник в вашу идею, но по-моему количество телодвижений в вашем варианте меньше не станет.
А зачем ее устанавливать? Как только запись создается, файлы из временной папки копируются в отдельную папку для хранения. В принципе оба варианта хороши. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
=Женек=, тут борьба не за количество телодвижений, а за согласованность данных
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |