![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Ripper |
|
|||
![]() Lonely soul... ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 30.6.2004 Где: г. Москва Репутация: 1 Всего: 23 |
Добрый день.
У меня на сайте в процессе работы на определенной странице юзер получает картинку. С этой картинкой он дальше работает, и после работы она не нужна. Картинка генерится на сервере и кладется в папку. Картинка темповая, т.е. после окончания работы она не нужна. С сайтом могут работать несколько юзеров на одной странице, где эта картинка генерится. Вопрос в том, как подчищать эти картинки? Вроде решения есть, но не хочется костылей. Вообще структура сайта такова: есть страница под номером 1, и есть под номером 2. Юзер переходит 1 -> 2. На странице 2 он получает картинку. На 2 страницу он может перейти только из первой. Можно на первой вывзать shell_exec, который бы вызвал удаление темповых файлов. Даже в том случае, если второму юзеру картинка была сгенерирована, а затем удалена первым юзером - проблем не будет т.к. ему главное видеть картинку в браузере на время работы. Или может cron какой-нибудь который просто бы подчищал переодически папку. (Подробнее про взаимодействие: заходя на 2 страницу отправляется аяксовский запрос с данными, и в ответ получаем путь до картинки, которую собственно вставляем с помощью jquery) Подскажите, как правильно поступить?) Спасибо -------------------- "Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
кроном вызывать скрипт который сверяет время создания картинки, вычитает -5 минут (допустим), и если все ок - удаляет
-------------------- Amazing |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
А обязательно создавать файл?
Держать картинку в переменной сессии. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Чучмек, Известно ли, что такое сессия? И как в ней хранится картинка?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Чучмек |
|
||||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Ну, про то, что сессия - это файл, а картинка в переменной будет хранится в виде строки, кодированной в base64 - тоже известно?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
Можно сессии и в БД хранить. А вот это вызывает большое сомнение. В PHP бинарные строки. p.s. pack тоже в base64 кодирует??? -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Хм... да, не base64, непечатные символы кодируются esc-последовательностями, вот и все расходы. Хотя, непечатных символов в изображении довольно много.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
Да нет, они никак не кодируются. Вот прикрепляю файл сессии из примера и соответствующую картинку. Картинка в сессии в чистом виде. правильнее не pack а serialize Вопрос не в том, как хранятся, а в том, чтобы переложить весь гемор с плеч скрипта на сервер. Картинка удалится вместе с сессией по устареванию. Присоединённый файл ( Кол-во скачиваний: 2 )
img.7z 10,37 Kb-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Осталось только выяснить, насколько изменится скорость доступа к сайту при сохранении большой картинки.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| BuShaRt |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Я обычно так и делаю. Добавлю, что скрипт не обязательно должен быть PHP - это может быть команда оболочки.
Вообще вариант достаточно интересный т.к. PHP сам будет чистить "мусор" накопленный в сессиях, тем самым избавляя нас от лишнего кода. Попробуйте этот вариант, хотя в нем могут быть подводные камни (на сложно сказать какие). На пример может быть ограничение на объем файла сессии. |
||||
|
|||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Более интересно как происходит использование изображение на клиенте, с перезагрузкой страницы или все асинхронные запросы? |
|||
|
||||
| Ripper |
|
|||
![]() Lonely soul... ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 30.6.2004 Где: г. Москва Репутация: 1 Всего: 23 |
Асинхронно все, да.
В сессию картинка запихнулась, но только в нативную пхпшную сессию, а вот в codeigniter-скую 500ая ошибка вылетает, не понимаю почему. Я думаю остановлюсь на кроне, как более железном варианте -------------------- "Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
И хоть кто-нибудь задумался об памяти. Зашло 1 тыща, /tmp забился временными файлами и усе. Файл сессии весит 8мб (да, да - картинка такая огромная у нас), а скрипту выделено 6/8 МБ в итоге получаем Fatal error: Cannot allocate X bytes of memory, -------------------- Amazing |
|||
|
||||
| Sentox |
|
||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Да не, это понятно что в сессию загонять сам файл это оооочень глупо. Кстати интересно а с изображением работает авторизированный пользователь? |
||||
|
|||||
![]()
|
| Правила форума "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. |