повторный запуск сессии

dorfey

Guest
повторный запуск сессии

Копаясь в логах обнаружил огромное количесво сообщений в виде:
PHP Notice: A session had already been started - ignoring session_start() in E:\server\DOCUMENT_ROOT\www\position.php on line 3, referer: http://127.0.0.1/catalog/?c=5

Посмотрев скрипты обнаружил что реально в двух скриптах есть начало сессии session_start();

Насколько подобный баг может оказаться критичным? Сразу скажу если где-то убрать session_start(); то падает как минимум половина сервисов :(
 

Фанат

oncle terrible
Команда форума
баг совершенно некритичен
просто ты имеешь две небольшие неприятности:
- загаживаются логи
- ты не понимаешь, как работает твоё приложение.
 

crocodile2u

http://vbolshov.org.ru
стартуй сессию ВЕЗДЕ следующей функцией:
PHP:
function my_session_start() {
    static $started = 0;
    if ($started || headers_sent()) {
         return;
    }
    $start = 1;
    session_start();
}
 

Tor

Новичок
if ($started || headers_sent())
почему бы еще не дописать проверку десятка переменных, встречающихся только в предыдущей строке?
 

dorfey

Guest
Фанат
1. загаживание логов подтолкнуло меня разобраться с данной проблемкой.
2. Как приложение работает я в курсах, видимо когда-то была допущенна эта ошибка, а терь приложение оч "заросло" и весьма затруднительно разрулить ситуацию
 

Фанат

oncle terrible
Команда форума
гы.
с таким сильным логическим аппаратом странно, что только сессии у тебя глючат.
если оно "заросло", и тебе затруднительно разрулить, то значит, ты не понимаешь, как работает.
И это надо признать ,Как факт.
А не оправдываться.
 

Tor

Новичок
crocodile2u

а подумать?
ты ставишь $started = 0
а в след. строке проверяешь if ($started || headers_sent())
ты думаешь, есть случаи, когда $started>0 ?
 

crocodile2u

http://vbolshov.org.ru
А... ну да... додуматься до того, что это опечатка, несложно.

На всякий случай:
вместо
PHP:
$start = 1;
следует читать
PHP:
$started = 1;
 

crocodile2u

http://vbolshov.org.ru
Tor
Не флуди. Всем и так ясно, какой ты крутой-супервнимательный штирлиц ;)
 
Сверху