Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
Как реализована загрузка файлов на таких сервисы как вконтакте.То есть без перезагрузки и с показом превью.А конкретно как они избегают появления "мусора" если пользователь не нажал "сохранить изменения" или обновил страницу сразу после загрузки.Вопрос можен не совсем к месту, но кто знает помогите буду благодарен.
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 31 Августа, 2012 - 18:36:40
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
jonston
Очевидно как - то, что пользователь подтвердил, сохраняется в некотором хранилище (например, в БД) данных с флагом, что оно загружено корректно. Затем некоторый фоновый скрипт проверяет хранилище того, что "загружено до конца" и все, что не подходит под критерий - удаляет из хранилища загруженных файлов.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 03 Сентября, 2012 - 09:48:47
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
jonston
Очевидно как - то, что пользователь подтвердил, сохраняется в некотором хранилище (например, в БД) данных с флагом, что оно загружено корректно. Затем некоторый фоновый скрипт проверяет хранилище того, что "загружено до конца" и все, что не подходит под критерий - удаляет из хранилища загруженных файлов.
что подразумевается под выражением "фоновый скрипт"?То есть фото грузится в папку tmp например а какой-то скрипт-робот оббегает эту папку, проверяет корректность загруженных фото и удаляет если фото загружено некорректно?
Может быть есть попроще вариант?Благодарю за помощь!
Что вы мне дали за ссылку?Я знаю что такое асинхронные запросы к серверу.
----- $i = 0;
$i = $i++ + ++$i; ?
KingStar
Отправлено: 03 Сентября, 2012 - 11:57:39
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
ну дык в чем проблема??? загружай файлы аяксом и обрабатывай как тебе нужно
----- То что программа работает, не означает что она написана правильно!
jonston
Отправлено: 03 Сентября, 2012 - 13:06:56
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
KingStar пишет:
ну дык в чем проблема??? загружай файлы аяксом и обрабатывай как тебе нужно
Дело в том что есть форма добавления товара.Загружаю через iframe фото без перезагрузки.Далее ввожу информацию о товаре и нажимаю ОПУБЛИКОВАТЬ.Допустим пользователь не опубликовав товар, закроет вкладку так и не сохранив фото , что тогда делать с мусором (фото) который уже залит на сервак?
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
А вопрос-то интересный! Хотя, по-сути, для меня бесполезный (пока). Предположим, действие происходит так:
1. Юзер выбирает файл, загружает.
2. Файл загружается в папку /tmp
3. Скрипт ждет подтверждения, добавления описания и т.д.
4. Юзер ввел инфу, нажал "Сохранить", сидит довольный.
Предположим, что юзер закрыл браузер перед п.4. По идее, как написал уважаемый EuGen:
EuGen пишет:
Затем некоторый фоновый скрипт проверяет хранилище того, что "загружено до конца" и все, что не подходит под критерий - удаляет из хранилища загруженных файлов.
Все бы хорошо, да вот помнится мне как-то я то ли музыку добавлял, то ли что-то ещё, файл поставил на загрузку и лег спать, а утром преспокойненько нажал "сохранить" и все сохранилось. Прошло как минимум 8 часов, а файл ещё был на месте (т.е. в /tmp, предположительно). Получается, что фоновый скрипт запускается раз в не менее чем восемь часов. Представляете, сколько всего можно накидать за такой период времени? И можно было бы представить, что пока открыта форма для ввода данных, аяксом из формы периодически передается флаг, который не разрешает фоновому скрипту удаление сего файла, но комп я перед сном на таймер ставлю (30 минут), чтоб с музычкой засыпать (= после чего он в гибернацию уходит. Соответственно, вариант с флагом из формы можно откинуть. А какой тогда вариант? Если просто фоновый скрипт шерстит папку (или БД), то есть процент вероятности того, что скрипт прошерстит папку именно в тот промежуток времени, когда у пользователя файл залит а кнопка "Сохранить" ещё не нажата. Все мы знаем масштабы "Вконтакте", там, наверное, в секунду по несколько файлов заливают, значит и процент вероятности попасть скриптом в этот промежуток очень даже крупный. Значит какое-то волшебство) Если честно, сейчас голова занята другим и реализацию искать ни желания ни времени нет, но тема интересна.
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
Vinyl пишет:
Все бы хорошо, да вот помнится мне как-то я то ли музыку добавлял, то ли что-то ещё, файл поставил на загрузку и лег спать, а утром преспокойненько нажал "сохранить" и все сохранилось. Прошло как минимум 8 часов, а файл ещё был на месте (т.е. в /tmp, предположительно). Получается, что фоновый скрипт запускается раз в не менее чем восемь часов. Представляете, сколько всего можно накидать за такой период времени? И можно было бы представить, что пока открыта форма для ввода данных, аяксом из формы периодически передается флаг, который не разрешает фоновому скрипту удаление сего файла, но комп я перед сном на таймер ставлю (30 минут), чтоб с музычкой засыпать (= после чего он в гибернацию уходит. Соответственно, вариант с флагом из формы можно откинуть. А какой тогда вариант? Если просто фоновый скрипт шерстит папку (или БД), то есть процент вероятности того, что скрипт прошерстит папку именно в тот промежуток времени, когда у пользователя файл залит а кнопка "Сохранить" ещё не нажата. Все мы знаем масштабы "Вконтакте", там, наверное, в секунду по несколько файлов заливают, значит и процент вероятности попасть скриптом в этот промежуток очень даже крупный. Значит какое-то волшебство) Если честно, сейчас голова занята другим и реализацию искать ни желания ни времени нет, но тема интересна.
Вот ты понял я вижу всю суть вопроса.Если привязать время заливки файла что бы потом скрипт сравнивал насколько давно был залит файл и удалял его если лимит времени был достигнут.Но блин вопрос производительности.Что с одного клиента будет запускаться скрипт который удаляет все tmp файлы и свои и чужие?Или создавать отдельную папку для каждого юзера?Вопрос не тривиальный.Какие еще могут быть варианты?
P.S. Я заметил что вконтакте до сих хранится залитый мною, но не опубликованный 2 часа назад файл
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Vinyl пишет:
Получается, что фоновый скрипт запускается раз в не менее чем восемь часов.
А может удалять файлы, которым - неделя.
Vinyl пишет:
сколько всего можно накидать за такой период времени?
И что? Дисковое место дешёвое. Лимиты на количество файлов в директории нормально обходятся секционированием. Да и горизонтально масштабируется аналогично.
Vinyl пишет:
есть процент вероятности того, что скрипт прошерстит папку именно в тот промежуток времени, когда у пользователя файл залит а кнопка "Сохранить" ещё не нажата.
Ну и если пользователь не нажал-таки на эту кнопку за отведённые на это часы (или дни) - что же поделать.
Или убивать файлы, загруженные с ныне протухшей сессии только. Или вообще не удалять, а сказать, что это фича - хранение всех загруженных файлов. Вопрос только допустимого именно для вас оверхеда.
----- PostgreSQL DBA
jonston
Отправлено: 03 Сентября, 2012 - 14:05:38
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
откуда запускать скрипт чистки файлов?От клиента или можно написать какой-то автоматизированный скрипт который самозапускался бы в определенное время и сам все удалял?Вообще возможна ли реализация скрипта без вмешательства клиента?
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
Мелкий пишет:
Или вообще не удалять
Скорее всего, у vk так и есть. (Добавление)
jonston пишет:
откуда запускать скрипт чистки файлов?От клиента или можно написать какой-то автоматизированный скрипт который самозапускался бы в определенное время и сам все удалял?Вообще возможна ли реализация скрипта без вмешательства клиента
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.