Как определить, какой механизм вызывает session_start для создания новых сессий, а не возобновления предыдущих?
Это видно в исходном коде PHP для session_start
функция .Вам нужно прочитать C-код и сравнить с вашим использованием.
Из того, что я знаю о сеансах, session_start
не начнет новый сеанс, если он уже активен.Чтобы узнать, активен ли уже сеанс, см. Как узнать, активен ли сеанс? .
Однако, если сеанс запущен (и его не было раньше), изатем закрывается и вы создаете новый сеанс в том же запросе, PHP может подумать, что сеанс не существует (потому что cookie из браузера по-прежнему пуст).И тогда будет запущен второй, также новый, сеанс.
Если вы не уверены, что и для чего, просто создайте себе тестовый сценарий, в котором вы поиграете со сценариями.
Возможный сценарий:
- Браузер отправляет запрос
- PHP запускается
session_start()
вызывается.Сеансового cookie не существует, PHP создаст новый идентификатор сеанса и создаст заголовки cookie. - вы закрываете сессию.
session_start()
вызывается.Сеансовый cookie не существует (в запросе), PHP создаст новый идентификатор сеанса и создаст заголовки cookie.
Создано два сеанса, один из которых не будет использоваться браузером для последующих запросов.(заголовок идентификатора сеанса для cookie был «перезаписан» (последний заголовок cookie заменяет предыдущие для рассматриваемого cookie).
Для отладки можно использовать headers_list
а также $_COOKIES
.