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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Темповые файлы 
:(
    Опции темы
Ripper
Дата 31.7.2012, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

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



Добрый день.

У меня на сайте в процессе работы на определенной странице юзер получает картинку. С этой картинкой он дальше работает, и после работы она не нужна. Картинка генерится на сервере и кладется в папку. Картинка темповая, т.е. после окончания работы она не нужна. С сайтом могут работать несколько юзеров на одной странице, где эта картинка генерится. Вопрос в том, как подчищать эти картинки? Вроде решения есть, но не хочется костылей. 

Вообще структура сайта такова: есть страница под номером 1, и есть под номером 2. Юзер переходит 1 -> 2. На странице 2 он получает картинку. На 2 страницу он может перейти только из первой. Можно на первой вывзать shell_exec, который бы вызвал удаление темповых файлов. Даже в том случае, если второму юзеру картинка была сгенерирована, а затем удалена первым юзером - проблем не будет т.к. ему главное видеть картинку в браузере на время работы. 
Или может cron какой-нибудь который просто бы подчищал переодически папку.

(Подробнее про взаимодействие: заходя на 2 страницу отправляется аяксовский запрос с данными, и в ответ получаем путь до картинки, которую собственно вставляем с помощью jquery)

Подскажите, как правильно поступить?) Спасибо


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
MoLeX
Дата 31.7.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



кроном вызывать скрипт который сверяет время создания картинки, вычитает -5 минут (допустим), и если все ок - удаляет


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Чучмек
Дата 31.7.2012, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


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

Репутация: 4
Всего: 41



А обязательно  создавать файл?
Держать картинку в переменной сессии.  


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
ksnk
Дата 31.7.2012, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Чучмек, Известно ли, что такое сессия? И как в ней хранится картинка?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Чучмек
Дата 31.7.2012, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


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

Репутация: 4
Всего: 41



Код

<?php
    session_name('abc');
    session_start();
    $img='img1.jpg';
    $h=fopen($img,'r');
    $_SESSION['img']=fread($h,filesize($img));
    fclose($h);

?>
<html>
<body>
<img src=i.php> </img>
</body>
</html>


Код

<?php
    session_name('abc');
    session_start();
    if (isset($_SESSION['img']))
    {
    header("Content-type: image/jpeg");
    echo $_SESSION['img'];
    }else
    {
    header("HTTP/1.1 404 Not Found");
    }
?>



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
ksnk
Дата 31.7.2012, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Ну, про то, что сессия - это файл, а картинка в переменной будет хранится в виде строки, кодированной в base64 - тоже известно?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Чучмек
Дата 31.7.2012, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


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

Репутация: 4
Всего: 41



Цитата(ksnk @  31.7.2012,  16:37 Найти цитируемый пост)
что сессия - это файл

Можно сессии и в БД хранить.


Цитата(ksnk @  31.7.2012,  16:37 Найти цитируемый пост)
кодированной в base64

А вот это вызывает большое сомнение. В PHP бинарные строки. 
p.s. pack тоже в  base64 кодирует???


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
ksnk
Дата 31.7.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Хм... да, не base64, непечатные символы кодируются esc-последовательностями, вот и все расходы. Хотя, непечатных символов в изображении довольно много.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Чучмек
Дата 31.7.2012, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


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

Репутация: 4
Всего: 41



Цитата(ksnk @  31.7.2012,  16:55 Найти цитируемый пост)
кодируются esc-последовательностями

Да нет, они никак не кодируются.
Вот прикрепляю  файл сессии из примера и соответствующую картинку.
Картинка в сессии в чистом виде.

 
Цитата(Чучмек @  31.7.2012,  16:44 Найти цитируемый пост)
p.s. pack тоже в  base64 кодирует??? 

правильнее не pack а serialize

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


Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  img.7z 10,37 Kb


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
ksnk
Дата 31.7.2012, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Осталось только выяснить, насколько изменится скорость доступа к сайту при сохранении большой картинки.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
BuShaRt
Дата 31.7.2012, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 4
Всего: 6



Цитата(MoLeX @  31.7.2012,  13:31 Найти цитируемый пост)
кроном вызывать скрипт который сверяет время создания картинки, вычитает -5 минут (допустим), и если все ок - удаляет 

Я обычно так и делаю. Добавлю, что скрипт не обязательно должен быть PHP - это может быть команда оболочки.


Цитата(Чучмек @  31.7.2012,  15:33 Найти цитируемый пост)
А обязательно  создавать файл?
Держать картинку в переменной сессии.   

Вообще вариант достаточно интересный т.к. PHP сам будет чистить "мусор" накопленный в сессиях, тем самым избавляя нас от лишнего кода. Попробуйте этот вариант, хотя в нем могут быть подводные камни (на сложно сказать какие). На пример может быть ограничение на объем файла сессии.
PM MAIL   Вверх
Sentox
Дата 31.7.2012, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

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



Цитата

(Подробнее про взаимодействие: заходя на 2 страницу отправляется аяксовский запрос с данными, и в ответ получаем путь до картинки, которую собственно вставляем с помощью jquery)


Более интересно как происходит использование изображение на клиенте, с перезагрузкой страницы или все асинхронные запросы? 
PM MAIL   Вверх
Ripper
Дата 31.7.2012, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

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



Асинхронно все, да.

В сессию картинка запихнулась, но только в нативную пхпшную сессию, а вот в codeigniter-скую 500ая ошибка вылетает, не понимаю почему.
Я думаю остановлюсь на кроне, как более железном варианте


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
MoLeX
Дата 1.8.2012, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата
Держать картинку в переменной сессии.  

И хоть кто-нибудь задумался об памяти.
Зашло 1 тыща, /tmp забился временными файлами и усе.
Файл сессии весит 8мб (да, да  - картинка такая огромная у нас), а скрипту выделено 6/8 МБ в итоге получаем Fatal error: Cannot allocate X bytes of memory, 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sentox
Дата 1.8.2012, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

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



Цитата(MoLeX @ 1.8.2012,  05:39)
Цитата
Держать картинку в переменной сессии.  

И хоть кто-нибудь задумался об памяти.
Зашло 1 тыща, /tmp забился временными файлами и усе.
Файл сессии весит 8мб (да, да  - картинка такая огромная у нас), а скрипту выделено 6/8 МБ в итоге получаем Fatal error: Cannot allocate X bytes of memory,

Да не, это понятно что в сессию загонять сам файл это оооочень глупо.
Кстати интересно а с изображением работает авторизированный пользователь?

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.0893 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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