Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка нескольких картинок на сервер. Вопрос стратегический. 
:(
    Опции темы
=Женек=
Дата 22.10.2014, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Доброе утро. Не знаю где лучше было бы разместить этот вопрос, он довольно общего характера. Но посколько в конечном счете реализация решения будет на PHP, решил написать здесь.

А вопрос следующий - есть форма для загрузки текстовых строк и картинок на сервер. При этом картинки грузятся на сервер еще на стадии заполнения формы - то есть человек нажимает на кнопку, вбирает файл, картинка через AJAX запрос загружается, создается ее мелкая копия, которая отправляется пользователю и он видит результат загрузки.
  И лишь когда все каритнки загружены, поля заполнены, пользователь нажимает кнопку и в базе создается запись с информацией полученной из текстовых полей и ссылок на файлы с картинками

Скрипты и HTML разметка написаны, все работает, и в данный момент мне хочется предусмотреть нештатную ситуацию - когда пользователь загрузил картинку и забил на все. В результате записи в базе данных нет, а во временной папке невостребованные картинки. Нужно как-то определить, что они являются мусором и удалить их.
 На ум приходят 3 варианта:
1. Чистить папку вручную.
2. Чистить папку по расписанию.
3. Вставить кусок кода, который при каждом запуске скрипта (скрипта загрузки) проверяет содержимое папки, сравнивает дату создания файлов с текущим времени и если они старые, удаляет.

В принципе все это рабоать будет, ено каждый из вариантов - в какой-то степени изврат. 
Мне хотелось бы знать, может быть есть какое-то более культурное решение, ведь предварительная загрузка изображений в настоящее время широко используется, я не придумаол ничего нового.
Может быть есть способ вставлять уменьшенную копию картинки в страницу не отправляя ее на сервер? Если делать все локально, без Apache, то работать будет - выбрал картинку, получил ее путь, изменил srс в img, но если HTML страничка загружена из интернета ссылки на диск не работают. 

В общем, кто что думает?

PM MAIL   Вверх
Vardoulacha
Дата 22.10.2014, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 11.8.2005

Репутация: 7
Всего: 8



По моему вариант 2 клевый и не затратный, чистить по крону раз в сутки и делов то, а главное быстро и просто. Надо исходить из задачи, если сервис небольшой, то затраты ресурсов на изучение папки будут минимальны.

Всегда можно будет в будущем придумать более элегантное решение. А так надо запускать скорее, а там может оказаться что это и не нужно никому ))

Это сообщение отредактировал(а) Vardoulacha - 22.10.2014, 08:26
PM MAIL   Вверх
=Женек=
Дата 22.10.2014, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Vardoulacha, 
Цитата

чистить по крону раз в сутки и делов то

А если в 3 часа ночи кто-то захочет залить картинки, а тут крон. Помимо крона нужно еще и проверку времени создания файлов запускать.
Так что наверное все-таки третий вариант. Да, действительно. В этом случае частота проверок будет оптимальна, и объем работы по чистке минимален - ведь при открытии страниыц предварительной загрузки в папке мы будем иметь мусор, оставшийся только от последнего предыдущего пользователя. А если их месяцами не будет - то и мусора не будет много и нужда заглядывать в папку каждый день отпадет.

Понимаете, вопрос был с контекстом "как фактически делают", а не "как же сделать, чтоб заработало"
PM MAIL   Вверх
s0lman
Дата 22.10.2014, 11:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(=Женек= @  22.10.2014,  07:19 Найти цитируемый пост)
В результате записи в базе данных нет

имхо, это в корне неправильно.
На этом шаге следует создать временную запись, а далее тем же кроном удалять картинки с вышедшим сроком давности (созданы больше суток назад, к примеру)




--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
=Женек=
Дата 22.10.2014, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Код

На этом шаге следует создать временную запись, а далее тем же кроном удалять картинки с вышедшим сроком давности (созданы больше суток назад, к примеру)

Зачем?
Практический смысл в этой записи? 
И на каком этапе ее создавать? При клике на ссылку "добавить статью" ?
То мы папку засоряем мусором, а вы предлагаете кидать мусор еще и в базу даных.
PM MAIL   Вверх
s0lman
Дата 22.10.2014, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(=Женек= @  22.10.2014,  11:08 Найти цитируемый пост)
Практический смысл в этой записи? 

Момент загрузки изображения запоминается в базе, т.е. не происходит никаких незаметных действий. Это исключит сценарий 
Цитата(=Женек= @  22.10.2014,  08:04 Найти цитируемый пост)
А если в 3 часа ночи кто-то захочет залить картинки, а тут крон.

, то бишь 
Цитата(=Женек= @  22.10.2014,  08:04 Найти цитируемый пост)
Помимо крона нужно еще и проверку времени создания файлов запускать.

только работа с базой всяко выгоднее, чем файловые операции.
Цитата(=Женек= @  22.10.2014,  11:08 Найти цитируемый пост)
И на каком этапе ее создавать? При клике на ссылку "добавить статью" ?

В вашем случае - сразу после загрузки файла посредством AJAX .
Цитата(=Женек= @  22.10.2014,  11:08 Найти цитируемый пост)
То мы папку засоряем мусором, а вы предлагаете кидать мусор еще и в базу даных. 

Ничто не мешает с базы удалить/обновить запись, но будет легко установить судьбу записи для данного файла (была создана, или же нет).


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
=Женек=
Дата 22.10.2014, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Может я не вник в вашу идею, но по-моему количество телодвижений в вашем варианте меньше не станет.
Цитата

но будет легко установить судьбу записи для данного файла (была создана, или же нет). 


А зачем ее устанавливать?  Как только запись создается, файлы из временной папки копируются в отдельную папку для хранения.

В принципе оба варианта хороши. 
PM MAIL   Вверх
baldina
Дата 22.10.2014, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



=Женек=, тут борьба не за количество телодвижений, а за согласованность данных
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.