Проблема с функцией session_start () (работает медленно)

У меня проблема с session_start() на основном сервере. Когда я загружаю страницу в первый раз, для завершения запроса требуется менее 1 секунды. Если я буду ждать приблизительно 12-15 секунд, а затем перезагрузите страницу, время загрузки будет таким же. Но когда я пытаюсь обновить страницу после, например, через 3 или 5 секунд после начальной загрузки, время ответа сервера равно 10 секундам.

Я сделал несколько тестов, чтобы определить узкое место в моем скрипте, и я узнал, что функция session_start() выполняется в течение 9.8 секунд. Я использую пакет PEAR HTTP_Session2. Вот фрагмент кода:

 HTTP_Session2::useCookies(SESSION_USE_COOKIE); /* Next line was added to make logging of execution time possible. */ self::writeToFile('HTTP_useCookies(1) -> '.self::getWorkTime()); HTTP_Session2::start("SID"); self::writeToFile('HTTP_start(2) -> '.self::getWorkTime()); HTTP_Session2::setExpire(time() + SESSION_EXPIRE); self::writeToFile('HTTP_setExpire(3) -> '.self::getWorkTime()); 

Текст журналов:

 //First loading (13:34:35) HTTP_useCookies(1) -> 0.00038 HTTP_start(2) -> 0.00077 HTTP_setExpire(3) -> 0.00090 // Second loading (13:34:39)(4 seconds later) HTTP_useCookies(1) -> 0.00029 HTTP_start(2) -> <<<<<< 10.80752 >>>>> HTTP_setExpire(3) -> <<<<<< 10.80780 >>>>> //Third loading (13:34:56) HTTP_useCookies(1) -> 0.00041 HTTP_start(2) -> 0.00071 HTTP_setExpire(3) -> 0.00083 

Поэтому я обнаружил, что эта проблема находится в функции HTTP_Session2::start() . Код функции HTTP_Session2::start() :

 public function start($name = 'SessionID', $id = null) { self::name($name); if (is_null(self::detectID())) { if ($id) { self::id($id); } else { self::id(uniqid(dechex(rand()))); } } session_start(); if (!isset($_SESSION['__HTTP_Session2_Info'])) { $_SESSION['__HTTP_Session2_Info'] = self::STARTED; } else { $_SESSION['__HTTP_Session2_Info'] = self::CONTINUED; } } 

Я не могу понять, в чем причина задержки времени. Возможно, на сервере установлены неправильные настройки Apache. Или, может быть, есть некоторые «блокировки» для файлов с информацией о сеансе.

Может быть, кто-то уже сталкивался с такими проблемами и может помочь в его решении.

Solutions Collecting From Web of "Проблема с функцией session_start () (работает медленно)"

Файл, содержащий информацию о сеансе, заблокирован в течение времени, когда PHP выполняет запрос.

Итак, если у вас есть один скрипт PHP (с использованием сеанса), который в настоящее время выполняется, и тот же пользователь отправляет другой запрос, второй запрос будет ждать завершения первого.