Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

session_start();
session_name('cp');

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

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

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

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


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

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

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

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

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

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

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

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

Бред.

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

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

Бред.

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

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

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

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

Цитата:
Сообщение от cybviolence Посмотреть сообщение
Блин, пофлудили, в итоге 0
Читайте мой первый пост в этой теме и думайте.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск