Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: загрузка файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
jonston
Отправлено: 31 Августа, 2012 - 17:31:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Как реализована загрузка файлов на таких сервисы как вконтакте.То есть без перезагрузки и с показом превью.А конкретно как они избегают появления "мусора" если пользователь не нажал "сохранить изменения" или обновил страницу сразу после загрузки.Вопрос можен не совсем к месту, но кто знает помогите буду благодарен.


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 31 Августа, 2012 - 18:36:40
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




jonston
Очевидно как - то, что пользователь подтвердил, сохраняется в некотором хранилище (например, в БД) данных с флагом, что оно загружено корректно. Затем некоторый фоновый скрипт проверяет хранилище того, что "загружено до конца" и все, что не подходит под критерий - удаляет из хранилища загруженных файлов.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 03 Сентября, 2012 - 09:48:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
jonston
Очевидно как - то, что пользователь подтвердил, сохраняется в некотором хранилище (например, в БД) данных с флагом, что оно загружено корректно. Затем некоторый фоновый скрипт проверяет хранилище того, что "загружено до конца" и все, что не подходит под критерий - удаляет из хранилища загруженных файлов.


что подразумевается под выражением "фоновый скрипт"?То есть фото грузится в папку tmp например а какой-то скрипт-робот оббегает эту папку, проверяет корректность загруженных фото и удаляет если фото загружено некорректно?
Может быть есть попроще вариант?Благодарю за помощь!

(Отредактировано автором: 03 Сентября, 2012 - 09:49:15)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
KingStar
Отправлено: 03 Сентября, 2012 - 10:07:31
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)






-----
То что программа работает, не означает что она написана правильно!
 
 Top
jonston
Отправлено: 03 Сентября, 2012 - 11:01:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




KingStar пишет:

Что вы мне дали за ссылку?Я знаю что такое асинхронные запросы к серверу.


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
KingStar
Отправлено: 03 Сентября, 2012 - 11:57:39
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




ну дык в чем проблема??? загружай файлы аяксом и обрабатывай как тебе нужно


-----
То что программа работает, не означает что она написана правильно!
 
 Top
jonston
Отправлено: 03 Сентября, 2012 - 13:06:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




KingStar пишет:
ну дык в чем проблема??? загружай файлы аяксом и обрабатывай как тебе нужно


Дело в том что есть форма добавления товара.Загружаю через iframe фото без перезагрузки.Далее ввожу информацию о товаре и нажимаю ОПУБЛИКОВАТЬ.Допустим пользователь не опубликовав товар, закроет вкладку так и не сохранив фото , что тогда делать с мусором (фото) который уже залит на сервак?

(Отредактировано автором: 03 Сентября, 2012 - 13:18:41)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Vinyl
Отправлено: 03 Сентября, 2012 - 13:23:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




А вопрос-то интересный! Хотя, по-сути, для меня бесполезный (пока). Предположим, действие происходит так:
1. Юзер выбирает файл, загружает.
2. Файл загружается в папку /tmp
3. Скрипт ждет подтверждения, добавления описания и т.д.
4. Юзер ввел инфу, нажал "Сохранить", сидит довольный.

Предположим, что юзер закрыл браузер перед п.4. По идее, как написал уважаемый EuGen:
EuGen пишет:
Затем некоторый фоновый скрипт проверяет хранилище того, что "загружено до конца" и все, что не подходит под критерий - удаляет из хранилища загруженных файлов.

Все бы хорошо, да вот помнится мне как-то я то ли музыку добавлял, то ли что-то ещё, файл поставил на загрузку и лег спать, а утром преспокойненько нажал "сохранить" и все сохранилось. Прошло как минимум 8 часов, а файл ещё был на месте (т.е. в /tmp, предположительно). Получается, что фоновый скрипт запускается раз в не менее чем восемь часов. Представляете, сколько всего можно накидать за такой период времени? И можно было бы представить, что пока открыта форма для ввода данных, аяксом из формы периодически передается флаг, который не разрешает фоновому скрипту удаление сего файла, но комп я перед сном на таймер ставлю (30 минут), чтоб с музычкой засыпать (= после чего он в гибернацию уходит. Соответственно, вариант с флагом из формы можно откинуть. А какой тогда вариант? Если просто фоновый скрипт шерстит папку (или БД), то есть процент вероятности того, что скрипт прошерстит папку именно в тот промежуток времени, когда у пользователя файл залит а кнопка "Сохранить" ещё не нажата. Все мы знаем масштабы "Вконтакте", там, наверное, в секунду по несколько файлов заливают, значит и процент вероятности попасть скриптом в этот промежуток очень даже крупный. Значит какое-то волшебство) Если честно, сейчас голова занята другим и реализацию искать ни желания ни времени нет, но тема интересна.


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
jonston
Отправлено: 03 Сентября, 2012 - 13:32:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Vinyl пишет:
Все бы хорошо, да вот помнится мне как-то я то ли музыку добавлял, то ли что-то ещё, файл поставил на загрузку и лег спать, а утром преспокойненько нажал "сохранить" и все сохранилось. Прошло как минимум 8 часов, а файл ещё был на месте (т.е. в /tmp, предположительно). Получается, что фоновый скрипт запускается раз в не менее чем восемь часов. Представляете, сколько всего можно накидать за такой период времени? И можно было бы представить, что пока открыта форма для ввода данных, аяксом из формы периодически передается флаг, который не разрешает фоновому скрипту удаление сего файла, но комп я перед сном на таймер ставлю (30 минут), чтоб с музычкой засыпать (= после чего он в гибернацию уходит. Соответственно, вариант с флагом из формы можно откинуть. А какой тогда вариант? Если просто фоновый скрипт шерстит папку (или БД), то есть процент вероятности того, что скрипт прошерстит папку именно в тот промежуток времени, когда у пользователя файл залит а кнопка "Сохранить" ещё не нажата. Все мы знаем масштабы "Вконтакте", там, наверное, в секунду по несколько файлов заливают, значит и процент вероятности попасть скриптом в этот промежуток очень даже крупный. Значит какое-то волшебство) Если честно, сейчас голова занята другим и реализацию искать ни желания ни времени нет, но тема интересна.


Вот ты понял я вижу всю суть вопроса.Если привязать время заливки файла что бы потом скрипт сравнивал насколько давно был залит файл и удалял его если лимит времени был достигнут.Но блин вопрос производительности.Что с одного клиента будет запускаться скрипт который удаляет все tmp файлы и свои и чужие?Или создавать отдельную папку для каждого юзера?Вопрос не тривиальный.Какие еще могут быть варианты?
P.S. Я заметил что вконтакте до сих хранится залитый мною, но не опубликованный 2 часа назад файл

(Отредактировано автором: 03 Сентября, 2012 - 13:36:40)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Мелкий Супермодератор
Отправлено: 03 Сентября, 2012 - 14:02:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Vinyl пишет:
Получается, что фоновый скрипт запускается раз в не менее чем восемь часов.

А может удалять файлы, которым - неделя.

Vinyl пишет:
сколько всего можно накидать за такой период времени?

И что? Дисковое место дешёвое. Лимиты на количество файлов в директории нормально обходятся секционированием. Да и горизонтально масштабируется аналогично.

Vinyl пишет:
есть процент вероятности того, что скрипт прошерстит папку именно в тот промежуток времени, когда у пользователя файл залит а кнопка "Сохранить" ещё не нажата.

Ну и если пользователь не нажал-таки на эту кнопку за отведённые на это часы (или дни) - что же поделать.
Или убивать файлы, загруженные с ныне протухшей сессии только. Или вообще не удалять, а сказать, что это фича - хранение всех загруженных файлов. Вопрос только допустимого именно для вас оверхеда.


-----
PostgreSQL DBA
 
 Top
jonston
Отправлено: 03 Сентября, 2012 - 14:05:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




откуда запускать скрипт чистки файлов?От клиента или можно написать какой-то автоматизированный скрипт который самозапускался бы в определенное время и сам все удалял?Вообще возможна ли реализация скрипта без вмешательства клиента?

(Отредактировано автором: 03 Сентября, 2012 - 14:07:43)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Vinyl
Отправлено: 03 Сентября, 2012 - 14:07:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


Помог: 15 раз(а)




Мелкий пишет:
Или вообще не удалять

Скорее всего, у vk так и есть.
(Добавление)
jonston пишет:
откуда запускать скрипт чистки файлов?От клиента или можно написать какой-то автоматизированный скрипт который самозапускался бы в определенное время и сам все удалял?Вообще возможна ли реализация скрипта без вмешательства клиента

Почитайте про Cron (если не в курсе)

(Отредактировано автором: 03 Сентября, 2012 - 14:09:19)



-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB