Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 11.10.2010, 01:54   #1
cybviolence
 
Регистрация: 07.02.2010
Сообщений: 6
По умолчанию session_start()

На сайте, который еле пашет, в index.php есть строки

session_start();
session_name('cp');

Отладка показывает, что выполнение команды session_start(); занимает 200мс ( 80% времени ).

Подскажите, почему столько времени? Куда можно копнуть? Спасибо!
cybviolence вне форума Ответить с цитированием
Старый 11.10.2010, 03:03   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Данная проблема может возникнуть из-за большого количества разных причин. Основной причиной принято считать очень большую задержку блокировки файла сессии.
Чтобы определить именно вашу причину - нужно хорошо знать как и для чего используется сессия у вас. Какие данные в ней хранятся, какой объем, какое количество раз эти данные изменяются во время обработки скрипта, какова длительность работы всего скрипта (ну это мы уже знаем).
Главные рекомендации в таких случаях - хранить в сессии лишь идентификатор пользователя (короткий id), с помощью которого доставать всю необходимую информацию из БД или из файлов (перегрузка системы сессий). Открывать сессию нужно лишь на самый кратчайший промежуток времени, только чтобы получить одну-две коротких переменных, после чего сессию сразу закрывать, это профилактика при большой нагрузке сайта (50+ пользователей одномоментно).

В самых запущенных случаях рекомендуется полностью самостоятельно перегружать сессию (см. session_set_save_handler)


З.Ы. И, да. Забыл упомянуть, что сессии часто работают ОЧЕНЬ медленно, если на сервере стоит разметка NTFS. Но, я думаю, это излишне даже упоминать. В наше время никто не ставит рабочие php сервера на Windows. Так что, это просто для информации.
Johnatan вне форума Ответить с цитированием
Старый 11.10.2010, 08:29   #3
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,755
По умолчанию

Цитата:
session_start();
session_name('cp');
Весь сайт работает с одним сессионным файлом?.. Пока сессия активна файл заблокирован, поскольку у вас "весь сайт" работает с одним файлом то все запущенные скрипты ждут завершения того, который первым открыл сессию.
Стандартный механизм сессий спроектирован так чтобы обеспечить надёжное хранение данных одного клиента в одном файле, механизма совместного доступа нет и быть не должно.
Стрелок-охотник

Последний раз редактировалось mv28jam; 11.10.2010 в 08:52.
mv28jam вне форума Ответить с цитированием
Старый 11.10.2010, 15:43   #4
cybviolence
 
Регистрация: 07.02.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
Весь сайт работает с одним сессионным файлом?.. Пока сессия активна файл заблокирован, поскольку у вас "весь сайт" работает с одним файлом то все запущенные скрипты ждут завершения того, который первым открыл сессию.
Стандартный механизм сессий спроектирован так чтобы обеспечить надёжное хранение данных одного клиента в одном файле, механизма совместного доступа нет и быть не должно.
Вот , меня смутило имя CP статическое. Стоит попробовать каждому задавать уникальное имя сессии?
cybviolence вне форума Ответить с цитированием
Старый 11.10.2010, 19:32   #5
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,672
По умолчанию

Цитата:
Основной причиной принято считать очень большую задержку блокировки файла сессии.
Бред.
Цитата:
Главные рекомендации в таких случаях - хранить в сессии лишь идентификатор пользователя (короткий id), с помощью которого доставать всю необходимую информацию из БД или из файлов (перегрузка системы сессий). Открывать сессию нужно лишь на самый кратчайший промежуток времени, только чтобы получить одну-две коротких переменных, после чего сессию сразу закрывать, это профилактика при большой нагрузке сайта (50+ пользователей одномоментно).
Бред.
Цитата:
Какие данные в ней хранятся, какой объем
Возможная причина.
Причины могут быть следующие:
- большой объём данных в сессии (>65 Кб),
- проблемы с доступом к папке tmp,
- слишком много сессии или много файлов в tmp.
Цитата:
Вот , меня смутило имя CP статическое. Стоит попробовать каждому задавать уникальное имя сессии?
Без разницы - это делается лишь для того, чтобы запутать взломщиков.
Виталий Желтяков вне форума Ответить с цитированием
Старый 11.10.2010, 23:51   #6
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Возможная причина.
...
- слишком много сессии или много файлов в tmp.
Вот это действительно бред. Причём полный.

Рекомендую хотя бы погуглить на тему, прежде чем объявлять бредом то, о чём, судя по ответу, понятия не имеете.
Johnatan вне форума Ответить с цитированием
Старый 12.10.2010, 18:00   #7
cybviolence
 
Регистрация: 07.02.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Бред.

Бред.

Возможная причина.
Причины могут быть следующие:
- большой объём данных в сессии (>65 Кб),
- проблемы с доступом к папке tmp,
- слишком много сессии или много файлов в tmp.

Без разницы - это делается лишь для того, чтобы запутать взломщиков.
Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Бред.

Бред.

Возможная причина.
Причины могут быть следующие:
- большой объём данных в сессии (>65 Кб),
- проблемы с доступом к папке tmp,
- слишком много сессии или много файлов в tmp.

Без разницы - это делается лишь для того, чтобы запутать взломщиков.
Как посмотреть объем сессии?
На папку tmp стоят права 750 и она пустая
cybviolence вне форума Ответить с цитированием
Старый 12.10.2010, 21:14   #8
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,672
По умолчанию

Цитата:
Цитата:
Возможная причина.
...
- слишком много сессии или много файлов в tmp.
Вот это действительно бред. Причём полный.
Ну, ну... Это Вы yahoo! ещё скажите, которые погорели на этих файлах.
Виталий Желтяков вне форума Ответить с цитированием
Старый 14.10.2010, 10:55   #9
cybviolence
 
Регистрация: 07.02.2010
Сообщений: 6
По умолчанию

Блин, пофлудили, в итоге 0
cybviolence вне форума Ответить с цитированием
Старый 14.10.2010, 11:17   #10
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от cybviolence Посмотреть сообщение
Блин, пофлудили, в итоге 0
Читайте мой первый пост в этой теме и думайте.
Johnatan вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы



Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS