session_start() вешает скрипт

Phristen

Новичок
session_start() вешает скрипт

Есть два скрипта.
Один с ignore_user_abort(); и set_time_limit(0); (планировщик), другой - просто страница.

Если сначала запустить первый, а потом (в том-же браузере, т.е. с тем-же id сессии) второй, и в обоих вызвать session_start(), то второй скрипт повиснет на session_start() до тех пор, пока первый не закончит работу. Если открыть страницу в новом окне, то все работает без задержек, что характерно.

Почему? Интерес в данном случае, чисто академический, но всё-же :)
 

Phristen

Новичок
Это понятно, я так и делаю.
Но вопрос в том, почему session_start вообще вешает скрипт? Какой уникальный ресурс удерживает session_start до самого окончания скрипта?
 

DvR

Новичок
А какая версия пхп? вообще в документации однозначно сказано

Замечание: As of PHP 4.3.3, calling session_start() while the session has already been started will result in an error of level E_NOTICE. Also, the second session start will simply be ignored.

и до кучи:

It seems that the session file is opened exclusively.
On some occasions (Windows) I have found that the file lock is not released properly for whatever reason, therefore causing session_start() to hang infinitely on any future script executions.
My way round this problem was to use session_set_save_handler() and make sure the write function used fopen($file, 'w') instead of fopen($file, 'x')

и

A note on Windows installations with an NTFS file structure:

Make sure you give your Internet user account (usually IUSR_MACHINENAME) "Modify" access to the session.save_path directory. Otherwise session_start() will silently - and oh, so slowly - fail.

("Modify" is a Win2k term, but the concept translates to older IIS installs).
 

Фанат

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

DvR

Новичок
Автор оригинала: Фанат
DvR
ну и каша у тебя в голове.
из трёх идей - только одна верная.
про первую ты вообще не понял, к чему она, а последнюю уже, видимо, до кучи приплёл =)
я отвечал на вопрос "почему session_start вешает скрипт".

что тебе не понравилось в цитатах из документации?
 

Фанат

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

DvR

Новичок
Автор оригинала: Фанат
то, что две трети цитат имеют к пробеме никакого отношния.
с тем же успехом ты мог бы цитировать ман по мускулю или камасутру.
(1) в соответствии с документацией пхп должен давать нотис "сессия уже запущена"

НО! в виндовсе пользователями были замечены следующие фишки (2 и 3)

причем тут мускуль и камасутра? пытаюсь показать человеку что в документации все же написано. причем как правило все то с чем он сталкивается :)
 

hermit_refined

Отшельник
(1) в соответствии с документацией пхп должен давать нотис "сессия уже запущена"
НО! в виндовсе пользователями были замечены следующие фишки (2
что в документации все же написано
о чём и речь :)) советуется вам её и почитать.
 

Phristen

Новичок
As of PHP 4.3.3, calling session_start() while the session has already been started will result in an error of level E_NOTICE. Also, the second session start will simply be ignored.
Вот именно. В свете последнего предложения, никакого зависания быть не должно, почему я и спрашиваю :)

А вот это
It seems that the session file is opened exclusively.
похоже на правду.
Хотя хостинг на линуксе.

В-общем, всё понятно :) Спасибо, кто ответил.
 

Фанат

oncle terrible
Команда форума
DvR
ты ваще не понял, к чему (1) относится.
вдумываться в смысл прочитанного надо?
с какой стати calling session_start() в другом скрипте will result in an error of level E_NOTICE?
 

SiMM

Новичок
> Хотя хостинг на линуксе.
А что, на линуксе файл не может быть открыт эксклюзивно?
 

DvR

Новичок
Автор оригинала: Фанат
DvR
ты ваще не понял, к чему (1) относится.
вдумываться в смысл прочитанного надо?
с какой стати calling session_start() в другом скрипте will result in an error of level E_NOTICE?
м. я понял что тебе не понравилось и в чем моя ошибка :) спасибо.
 

Phristen

Новичок
Автор оригинала: SiMM
> Хотя хостинг на линуксе.
А что, на линуксе файл не может быть открыт эксклюзивно?
Не цепляемся к словам :)
Там в коментах про винду упомянули, вот я и говорю что не только на винде.
 
Сверху