Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: стоит ли использовать session_save_path?
 
 автор: ProtoTeeP   (28.09.2007 в 19:50)   письмо автору
 
 

в общем делаю чат, как понимаете там будет много людей....

использую сессии, все жалуются, что это очень тормозит работу скрипта.
в основном из-за проверки существования подобной сессии, при регистрации сессии.
вот я и подумал, если сессии распределить в разные папки т.е. как с файлами не больше 100 в одну папку и в месте с сидом в куки или гетом передавать название папки к которой относится сессия...
как думает это поможет? и как лувчше узнавать о количестве файлов в папке? записывать в файл сколько записей в папках или с помощью glob() ???

   
 
 автор: Unkind   (28.09.2007 в 20:49)   письмо автору
 
   для: ProtoTeeP   (28.09.2007 в 19:50)
 

Если используете стандартные сессии PHP, то очень сомневаюсь, что тормозят скрипты из-за них.
Если знаете, в какой папке они хранятся, то надо использовать file_exists(), а не получать список всех файлов. Это чтобы проверить существование сессии. Иначе можно использовать таблицу MySQL для хранения идентификаторов сессии.

   
 
 автор: Prototeep   (28.09.2007 в 21:16)   письмо автору
 
   для: Unkind   (28.09.2007 в 20:49)
 

Нет. Я не хочу вручную создавать сессии, я просто их по папкам разделю... Т.е. 1ые 100 сессий в 1папке, след. 100 в другой... И т.д. Мне не надо узнавать есть такая сессия или нет, мне нужно узнать сколько на данный момент есть файлов в опред. Папке...

   
 
 автор: ProtoTeeP   (28.09.2007 в 21:30)   письмо автору
 
   для: Prototeep   (28.09.2007 в 21:16)
 

Хотя нет. Я передумал. Зачем мне узнавать сколько файлов. Я просто равномерно распределю. Т.е. Создам папки 60 штук, для каждой минуты. Т.е. В 1мин. Запись идет в 1 папку, во 2ую мин. Запись идет во 2ую папку и т.д... :))

   
 
 автор: Unkind   (28.09.2007 в 21:36)   письмо автору
 
   для: ProtoTeeP   (28.09.2007 в 21:30)
 

Вообще-то PHP будет все файлы все равно в одну папку переносить.
Вы че хотите сделать-то?

   
 
 автор: ProtoTeeP   (28.09.2007 в 21:44)   письмо автору
 
   для: Unkind   (28.09.2007 в 21:36)
 

:) все занова рассказать?

   
 
 автор: Unkind   (28.09.2007 в 21:56)   письмо автору
 
   для: ProtoTeeP   (28.09.2007 в 21:44)
 

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

   
 
 автор: Ralph   (29.09.2007 в 08:57)   письмо автору
 
   для: Unkind   (28.09.2007 в 21:56)
 

Простой эксперимент:поиск в папке с 10000 файлами СРЕДСТВАМИ ПХП занимает 0.01 секунду.Вы все еще уверены,что тормозят именно сессии,и что языком более высокого уровня сделаете быстрее и оптимальнее,чем команда опытных разработчиков языка делает это на Си ?

   
 
 автор: Ralph   (29.09.2007 в 09:05)   письмо автору
 
   для: Ralph   (29.09.2007 в 08:57)
 

Ах да,извините,невнимательно прочитал ваш первый пост:вы еще ТОЛЬКО ДЕЛАЕТЕ чат и уже уверены,что сессии будут тормозить ? Мой вам совет:не берите дурного в голову,тяжелого в руки и делайте как я-начинайте оптимизировать лишь то ,что уже реально создает у вас проблемы,а не то,что,как вы только полагаете,будет создавать проблемы.Решайте проблемы по мере их поступления :)

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:13)   письмо автору
 
   для: Ralph   (29.09.2007 в 09:05)
 

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

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:10)   письмо автору
 
   для: Ralph   (29.09.2007 в 08:57)
 

>Простой эксперимент:поиск в папке с 10000 файлами СРЕДСТВАМИ ПХП занимает 0.01 секунду.Вы все еще уверены,что тормозят именно сессии,и что языком более высокого уровня сделаете быстрее и оптимальнее,чем команда опытных разработчиков языка делает это на Си ?

я знаю что Си сделает быстее, как не крутись, но я не создаю сессии вручную. я просто помогаю Си. т.е указываю папки, в которые необходимо сохранить сессию , и указываю папку в которой надо будет искать эту сессию.... остальное php сам делает...
получается мы 10000 /60 т.е. разделим по папкам...

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:03)   письмо автору
 
   для: Unkind   (28.09.2007 в 21:56)
 

ну вот.
запускаем сессию. если людей мало (сессионых файлов мало), то ничего особенного не будет.
ведь сналала проверяется существ. такая сессия или нет.
а вот если будет далеко за 1000? это тормозит, как все говорят... потому, что очень много файлов в одной папке и все их надо проверить....
поэтому, я решил разделить... и если даже и будут сиды одинаковые, файлы будут в разных папках. поэтому нет необходимости проверять существ. подобной сессии во всех папках, для всех файлов. php будет достаточно узнать сущест. такая сессия (сид) в данной папке или нет.
папок много (60 штук для каждой минуты) поэтому файлов в них будет меньше и проверка будет быстрее...
папку в которй хранится сессия будем передавать так же как и сам сид, через гет или в куки, если вкл.

план:
1ый запуск.
1) смотрим какая минута
2) указываем минуту как место хранения сессии через session_save_path();
3) записываем минуту в куки

след старт сессии
1) смотрим переменную содерж. минут. страта т.е. путь к сессии
2) указываем ее в session_save_path();
3) запускаем сессию.


---------------------
теперь вроде все понятно... это как загруз-цетнр, когда мы делим все по папкам, а не храним все в одной...

   
 
 автор: Ralph   (29.09.2007 в 09:12)   письмо автору
 
   для: ProtoTeeP   (29.09.2007 в 09:03)
 

А теперь 1.Сколько у вас будет папок через сутки ??? 2.Вы не забыли,что прежде чем искать файл в папке,пхп будет искать,существует ли подобная папка...То есть те же яйца,только вместо поиска файлов-поиск папки.От перемены мест множителей общее количество файлов не изменится

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:15)   письмо автору
 
   для: Ralph   (29.09.2007 в 09:12)
 

папок будет только 60 и все.
т.е. в течении часа в каждую папку будет записана сессия.
и я указываю ее сразу при проверке.

   
 
 автор: Ralph   (29.09.2007 в 09:24)   письмо автору
 
   для: ProtoTeeP   (29.09.2007 в 09:15)
 

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

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:31)   письмо автору
 
   для: Ralph   (29.09.2007 в 09:24)
 

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

ты и правда плохо читал 1ый пост =))
я же просто спросил "как думает это поможет? ". =))
я обычно спрашиваю. у более опытных, прежде чем делать что-то нестандартное. +)

   
 
 автор: Unkind   (29.09.2007 в 09:42)   письмо автору
 
   для: ProtoTeeP   (29.09.2007 в 09:31)
 

Вы меня, похоже совсем не слушаете.
Вместо этого с удовольствием слушаете тех, кто говорит: "от сессий вис".

Еще раз повторяю: у Вас физически не выйдет распределить файлы сессий на разные папки. Они каждую минуту, Ваши тысячи файлов будут переноситься в очередную папку.
Чтобы их не было так много, надо поставить более малое время жизни сессии.

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:57)   письмо автору
 
   для: Unkind   (29.09.2007 в 09:42)
 

>Вы меня, похоже совсем не слушаете.
>Вместо этого с удовольствием слушаете тех, кто говорит: "от сессий вис".

Я всех внимательно слушаю... =) просто хочу узнать всё и мнение всех , чтоб потом не возвращаться к этой теме

>Еще раз повторяю: у Вас физически не выйдет распределить файлы сессий на разные папки. Они каждую минуту, Ваши тысячи файлов будут переноситься в очередную папку.

Как это понять? почему они будут в одной папке?
хорошо по мин. будет слишком много, но хотя бы по часам... т.е. 24 папки.

>Чтобы их не было так много, надо поставить более малое время жизни сессии.

Но мне надо в течении дня или даже недели хранить сессию.

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:27)   письмо автору
 
   для: ProtoTeeP   (29.09.2007 в 09:15)
 

т.е. в 1ую минуту ЛЮБОГО часа будет записыватся только в 1ую папку, во 2ую мин. любого часа идет запись только во 2ую папку...и т.д.

если онлайн 3000 человек, это не значит что сессий у нас только 3000.
ведь сессии хранятся в течении дня. а значит нам надо считать сколько было за 24 часа... а это очень большая цифра

   
 
 автор: Ralph   (29.09.2007 в 09:35)   письмо автору
 
   для: ProtoTeeP   (29.09.2007 в 09:27)
 

Стандартное время хранения сессии примерно 24 минуты и его вы можете изменять в любую сторону .Онлайн 3000 человек-вы не для Yandex.ru случайно чат пишете ? :)

   
 
 автор: ProtoTeeP   (29.09.2007 в 09:46)   письмо автору
 
   для: Ralph   (29.09.2007 в 09:35)
 

>Стандартное время хранения сессии примерно 24 минуты и его вы можете изменять в любую сторону .Онлайн 3000 человек-вы не для Yandex.ru случайно чат пишете ? :)

ой, да... =) что-то перепутал... нет, не для яндекса.
там просто будет общая авторизация....
т.е. и форум и знакомства. даже простой гость и поиск-робот будет иметь сессию и иметь свои привелегии... половину данных дают при старте, записываю в сессии половину в БД. там тоже ищу оптимальный вариант...
+ хрнанить сессии мне надо в течении дня)

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

   
 
 автор: Unkind   (29.09.2007 в 11:41)   письмо автору
 
   для: ProtoTeeP   (29.09.2007 в 09:46)
 

Проведите тест:
- Создайте две папки;
- Инициализируйте сессию с сохранением файла сессии в первой папке.
- Сохраните какое-то значение в $_SESSION.
- Измените значение session_save_path на путь ко второй папке.
- Проверьте сохранилось ли Ваше значение.
- Проверьте, что во второй папке.

   
 
 автор: ProtoTeeP   (29.09.2007 в 14:09)   письмо автору
 
   для: Unkind   (29.09.2007 в 11:41)
 

Кто сказал что начинаться сессия будет в одной папке а потом будет переходить из папки в папку?
Она будет в 1ой папке, адрес к папке приходит гетом или через куки.

   
 
 автор: Sobachka   (29.09.2007 в 15:28)   письмо автору
 
   для: ProtoTeeP   (29.09.2007 в 14:09)
 

ЭТО УЖЕ глупо =)
храните сессии в базе... тут был прекрастный пример от смссенда как это сделать... http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=42871

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования