|
|
|
| в общем делаю чат, как понимаете там будет много людей....
использую сессии, все жалуются, что это очень тормозит работу скрипта.
в основном из-за проверки существования подобной сессии, при регистрации сессии.
вот я и подумал, если сессии распределить в разные папки т.е. как с файлами не больше 100 в одну папку и в месте с сидом в куки или гетом передавать название папки к которой относится сессия...
как думает это поможет? и как лувчше узнавать о количестве файлов в папке? записывать в файл сколько записей в папках или с помощью glob() ??? | |
|
|
|
|
|
|
|
для: ProtoTeeP
(28.09.2007 в 19:50)
| | Если используете стандартные сессии PHP, то очень сомневаюсь, что тормозят скрипты из-за них.
Если знаете, в какой папке они хранятся, то надо использовать file_exists(), а не получать список всех файлов. Это чтобы проверить существование сессии. Иначе можно использовать таблицу MySQL для хранения идентификаторов сессии. | |
|
|
|
|
|
|
|
для: Unkind
(28.09.2007 в 20:49)
| | Нет. Я не хочу вручную создавать сессии, я просто их по папкам разделю... Т.е. 1ые 100 сессий в 1папке, след. 100 в другой... И т.д. Мне не надо узнавать есть такая сессия или нет, мне нужно узнать сколько на данный момент есть файлов в опред. Папке... | |
|
|
|
|
|
|
|
для: Prototeep
(28.09.2007 в 21:16)
| | Хотя нет. Я передумал. Зачем мне узнавать сколько файлов. Я просто равномерно распределю. Т.е. Создам папки 60 штук, для каждой минуты. Т.е. В 1мин. Запись идет в 1 папку, во 2ую мин. Запись идет во 2ую папку и т.д... :)) | |
|
|
|
|
|
|
|
для: ProtoTeeP
(28.09.2007 в 21:30)
| | Вообще-то PHP будет все файлы все равно в одну папку переносить.
Вы че хотите сделать-то? | |
|
|
|
|
|
|
|
для: Unkind
(28.09.2007 в 21:36)
| | :) все занова рассказать? | |
|
|
|
|
|
|
|
для: ProtoTeeP
(28.09.2007 в 21:44)
| | Начинайте заново, если хотите. Вы убеждены, что раскидав файлы сессий по разным папкам (это PHP уже не предусматривает), Вы добъетесь быстродействия? Вы глубоко заблуждаетесь. | |
|
|
|
|
|
|
|
для: Unkind
(28.09.2007 в 21:56)
| | Простой эксперимент:поиск в папке с 10000 файлами СРЕДСТВАМИ ПХП занимает 0.01 секунду.Вы все еще уверены,что тормозят именно сессии,и что языком более высокого уровня сделаете быстрее и оптимальнее,чем команда опытных разработчиков языка делает это на Си ? | |
|
|
|
|
|
|
|
для: Ralph
(29.09.2007 в 08:57)
| | Ах да,извините,невнимательно прочитал ваш первый пост:вы еще ТОЛЬКО ДЕЛАЕТЕ чат и уже уверены,что сессии будут тормозить ? Мой вам совет:не берите дурного в голову,тяжелого в руки и делайте как я-начинайте оптимизировать лишь то ,что уже реально создает у вас проблемы,а не то,что,как вы только полагаете,будет создавать проблемы.Решайте проблемы по мере их поступления :) | |
|
|
|
|
|
|
|
для: Ralph
(29.09.2007 в 09:05)
| | =) просто, я не для себя делаю...
и есть примеры, там 3000 человек, вис ужасный, теряют людей.. поэтому стараюсь сразу все предусмотреть... хотя бы большую сторону проблем, с которыми могут столкнутся... | |
|
|
|
|
|
|
|
для: Ralph
(29.09.2007 в 08:57)
| | >Простой эксперимент:поиск в папке с 10000 файлами СРЕДСТВАМИ ПХП занимает 0.01 секунду.Вы все еще уверены,что тормозят именно сессии,и что языком более высокого уровня сделаете быстрее и оптимальнее,чем команда опытных разработчиков языка делает это на Си ?
я знаю что Си сделает быстее, как не крутись, но я не создаю сессии вручную. я просто помогаю Си. т.е указываю папки, в которые необходимо сохранить сессию , и указываю папку в которой надо будет искать эту сессию.... остальное php сам делает...
получается мы 10000 /60 т.е. разделим по папкам... | |
|
|
|
|
|
|
|
для: Unkind
(28.09.2007 в 21:56)
| | ну вот.
запускаем сессию. если людей мало (сессионых файлов мало), то ничего особенного не будет.
ведь сналала проверяется существ. такая сессия или нет.
а вот если будет далеко за 1000? это тормозит, как все говорят... потому, что очень много файлов в одной папке и все их надо проверить....
поэтому, я решил разделить... и если даже и будут сиды одинаковые, файлы будут в разных папках. поэтому нет необходимости проверять существ. подобной сессии во всех папках, для всех файлов. php будет достаточно узнать сущест. такая сессия (сид) в данной папке или нет.
папок много (60 штук для каждой минуты) поэтому файлов в них будет меньше и проверка будет быстрее...
папку в которй хранится сессия будем передавать так же как и сам сид, через гет или в куки, если вкл.
план:
1ый запуск.
1) смотрим какая минута
2) указываем минуту как место хранения сессии через session_save_path();
3) записываем минуту в куки
след старт сессии
1) смотрим переменную содерж. минут. страта т.е. путь к сессии
2) указываем ее в session_save_path();
3) запускаем сессию.
---------------------
теперь вроде все понятно... это как загруз-цетнр, когда мы делим все по папкам, а не храним все в одной... | |
|
|
|
|
|
|
|
для: ProtoTeeP
(29.09.2007 в 09:03)
| | А теперь 1.Сколько у вас будет папок через сутки ??? 2.Вы не забыли,что прежде чем искать файл в папке,пхп будет искать,существует ли подобная папка...То есть те же яйца,только вместо поиска файлов-поиск папки.От перемены мест множителей общее количество файлов не изменится | |
|
|
|
|
|
|
|
для: Ralph
(29.09.2007 в 09:12)
| | папок будет только 60 и все.
т.е. в течении часа в каждую папку будет записана сессия.
и я указываю ее сразу при проверке. | |
|
|
|
|
|
|
|
для: ProtoTeeP
(29.09.2007 в 09:15)
| | Повторюсь-я уже практически проверял быстродействие сессий,убедился,что к примеру,операции записи/чтения файла в файловую систему/БД занимает гораздо больше времени,чем инициализация сессии.При том количестве кода,который будет в чате-запись сообщений,проверка их и т.д. если что то и будет тормозить,то не сессии... Или может вам просто понравилась Ваша идея,и вы не хотите от нее отказываться и хотите убедить в ее правильности других ? Тогда это другое дело,поступайте как хотите... | |
|
|
|
|
|
|
|
для: Ralph
(29.09.2007 в 09:24)
| | >Повторюсь-я уже практически проверял быстродействие сессий,убедился,что к примеру,операции записи/чтения файла в файловую систему/БД занимает гораздо больше времени,чем инициализация сессии.При том количестве кода,который будет в чате-запись сообщений,проверка их и т.д. если что то и будет тормозить,то не сессии... Или может вам просто понравилась Ваша идея,и вы не хотите от нее отказываться и хотите убедить в ее правильности других ? Тогда это другое дело,поступайте как хотите...
ты и правда плохо читал 1ый пост =))
я же просто спросил "как думает это поможет? ". =))
я обычно спрашиваю. у более опытных, прежде чем делать что-то нестандартное. +) | |
|
|
|
|
|
|
|
для: ProtoTeeP
(29.09.2007 в 09:31)
| | Вы меня, похоже совсем не слушаете.
Вместо этого с удовольствием слушаете тех, кто говорит: "от сессий вис".
Еще раз повторяю: у Вас физически не выйдет распределить файлы сессий на разные папки. Они каждую минуту, Ваши тысячи файлов будут переноситься в очередную папку.
Чтобы их не было так много, надо поставить более малое время жизни сессии. | |
|
|
|
|
|
|
|
для: Unkind
(29.09.2007 в 09:42)
| | >Вы меня, похоже совсем не слушаете.
>Вместо этого с удовольствием слушаете тех, кто говорит: "от сессий вис".
Я всех внимательно слушаю... =) просто хочу узнать всё и мнение всех , чтоб потом не возвращаться к этой теме
>Еще раз повторяю: у Вас физически не выйдет распределить файлы сессий на разные папки. Они каждую минуту, Ваши тысячи файлов будут переноситься в очередную папку.
Как это понять? почему они будут в одной папке?
хорошо по мин. будет слишком много, но хотя бы по часам... т.е. 24 папки.
>Чтобы их не было так много, надо поставить более малое время жизни сессии.
Но мне надо в течении дня или даже недели хранить сессию. | |
|
|
|
|
|
|
|
для: ProtoTeeP
(29.09.2007 в 09:15)
| | т.е. в 1ую минуту ЛЮБОГО часа будет записыватся только в 1ую папку, во 2ую мин. любого часа идет запись только во 2ую папку...и т.д.
если онлайн 3000 человек, это не значит что сессий у нас только 3000.
ведь сессии хранятся в течении дня. а значит нам надо считать сколько было за 24 часа... а это очень большая цифра | |
|
|
|
|
|
|
|
для: ProtoTeeP
(29.09.2007 в 09:27)
| | Стандартное время хранения сессии примерно 24 минуты и его вы можете изменять в любую сторону .Онлайн 3000 человек-вы не для Yandex.ru случайно чат пишете ? :) | |
|
|
|
|
|
|
|
для: Ralph
(29.09.2007 в 09:35)
| | >Стандартное время хранения сессии примерно 24 минуты и его вы можете изменять в любую сторону .Онлайн 3000 человек-вы не для Yandex.ru случайно чат пишете ? :)
ой, да... =) что-то перепутал... нет, не для яндекса.
там просто будет общая авторизация....
т.е. и форум и знакомства. даже простой гость и поиск-робот будет иметь сессию и иметь свои привелегии... половину данных дают при старте, записываю в сессии половину в БД. там тоже ищу оптимальный вариант...
+ хрнанить сессии мне надо в течении дня)
вот, поэтому неоюходимо содержать большое количество сессий. людей ждут много, т.к. там будет много наших местных звезд.... | |
|
|
|
|
|
|
|
для: ProtoTeeP
(29.09.2007 в 09:46)
| | Проведите тест:
- Создайте две папки;
- Инициализируйте сессию с сохранением файла сессии в первой папке.
- Сохраните какое-то значение в $_SESSION.
- Измените значение session_save_path на путь ко второй папке.
- Проверьте сохранилось ли Ваше значение.
- Проверьте, что во второй папке. | |
|
|
|
|
|
|
|
для: Unkind
(29.09.2007 в 11:41)
| | Кто сказал что начинаться сессия будет в одной папке а потом будет переходить из папки в папку?
Она будет в 1ой папке, адрес к папке приходит гетом или через куки. | |
|
|
|
|
|
|
|
для: ProtoTeeP
(29.09.2007 в 14:09)
| | ЭТО УЖЕ глупо =)
храните сессии в базе... тут был прекрастный пример от смссенда как это сделать... http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=42871 | |
|
|
|