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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.10.2010, 02:54   #1
cybviolence
 
Регистрация: 07.02.2010
Сообщений: 6
Репутация: 10
По умолчанию 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
Репутация: 430
По умолчанию

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

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


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

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

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

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

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

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

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

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

Бред.

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

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

Бред.

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


04:09.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.