| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Загрузка нескольких картинок на сервер. |
| Автор: =Женек= 22.10.2014, 08:19 |
| Доброе утро. Не знаю где лучше было бы разместить этот вопрос, он довольно общего характера. Но посколько в конечном счете реализация решения будет на PHP, решил написать здесь. А вопрос следующий - есть форма для загрузки текстовых строк и картинок на сервер. При этом картинки грузятся на сервер еще на стадии заполнения формы - то есть человек нажимает на кнопку, вбирает файл, картинка через AJAX запрос загружается, создается ее мелкая копия, которая отправляется пользователю и он видит результат загрузки. И лишь когда все каритнки загружены, поля заполнены, пользователь нажимает кнопку и в базе создается запись с информацией полученной из текстовых полей и ссылок на файлы с картинками Скрипты и HTML разметка написаны, все работает, и в данный момент мне хочется предусмотреть нештатную ситуацию - когда пользователь загрузил картинку и забил на все. В результате записи в базе данных нет, а во временной папке невостребованные картинки. Нужно как-то определить, что они являются мусором и удалить их. На ум приходят 3 варианта: 1. Чистить папку вручную. 2. Чистить папку по расписанию. 3. Вставить кусок кода, который при каждом запуске скрипта (скрипта загрузки) проверяет содержимое папки, сравнивает дату создания файлов с текущим времени и если они старые, удаляет. В принципе все это рабоать будет, ено каждый из вариантов - в какой-то степени изврат. Мне хотелось бы знать, может быть есть какое-то более культурное решение, ведь предварительная загрузка изображений в настоящее время широко используется, я не придумаол ничего нового. Может быть есть способ вставлять уменьшенную копию картинки в страницу не отправляя ее на сервер? Если делать все локально, без Apache, то работать будет - выбрал картинку, получил ее путь, изменил srс в img, но если HTML страничка загружена из интернета ссылки на диск не работают. В общем, кто что думает? |
| Автор: Vardoulacha 22.10.2014, 08:23 |
| По моему вариант 2 клевый и не затратный, чистить по крону раз в сутки и делов то, а главное быстро и просто. Надо исходить из задачи, если сервис небольшой, то затраты ресурсов на изучение папки будут минимальны. Всегда можно будет в будущем придумать более элегантное решение. А так надо запускать скорее, а там может оказаться что это и не нужно никому )) |
| Автор: =Женек= 22.10.2014, 09:04 | ||
Vardoulacha,
А если в 3 часа ночи кто-то захочет залить картинки, а тут крон. Помимо крона нужно еще и проверку времени создания файлов запускать. Так что наверное все-таки третий вариант. Да, действительно. В этом случае частота проверок будет оптимальна, и объем работы по чистке минимален - ведь при открытии страниыц предварительной загрузки в папке мы будем иметь мусор, оставшийся только от последнего предыдущего пользователя. А если их месяцами не будет - то и мусора не будет много и нужда заглядывать в папку каждый день отпадет. Понимаете, вопрос был с контекстом "как фактически делают", а не "как же сделать, чтоб заработало" |
| Автор: s0lman 22.10.2014, 11:43 |
имхо, это в корне неправильно. На этом шаге следует создать временную запись, а далее тем же кроном удалять картинки с вышедшим сроком давности (созданы больше суток назад, к примеру) |
| Автор: =Женек= 22.10.2014, 12:08 | ||
Зачем? Практический смысл в этой записи? И на каком этапе ее создавать? При клике на ссылку "добавить статью" ? То мы папку засоряем мусором, а вы предлагаете кидать мусор еще и в базу даных. |
| Автор: =Женек= 22.10.2014, 14:13 | ||
Может я не вник в вашу идею, но по-моему количество телодвижений в вашем варианте меньше не станет.
А зачем ее устанавливать? Как только запись создается, файлы из временной папки копируются в отдельную папку для хранения. В принципе оба варианта хороши. |
| Автор: baldina 22.10.2014, 17:01 |
| =Женек=, тут борьба не за количество телодвижений, а за согласованность данных |