Intereting Posts
Получение данных SQL в JavaScript после вызова jQuery ajax Связь между php memory_limit, upload_max_filesize и post_max_filesize как вызвать функцию php при нажатии кнопки Правильный способ удаления всех файлов старше 2 дней в PHP Использование PHP, как мне сделать правило перезаписи? Как я могу определить / рассчитать, есть ли маленькие изображения внутри большего изображения? Пользовательская таксономия и пользовательский тип сообщения с пользовательским разбиением на страницы 404 не найдены Отправить несколько текстовых полей в массиве в PHP Вызов случайных сеансов Codeigniter (уже опробованный переопределить класс сеанса И повышение session_time_to_update (PHP) Как использовать crypt () с CRYPT_BLOWFISH? Мое приложение zend не может загружать файлы на youtube Устаревший: функция split () устарела. Как переписать это заявление? Как вызвать службу веб-сайта из PHP? Месяц по неделям года? Динамическое изменение темы WordPress

Повторное открытие сеанса в PHP

Как повторно открыть сеанс в PHP без получения заголовков уже отправленных предупреждений?

После установки всех сеансовых сессий, которые мне нравятся, я закрываю сессию session_write_close () . Я делаю это, потому что пока сеанс открыт, может быть только одно активное соединение от одного и того же клиента. Но мне нравится иметь несколько параллельных.

Однако, если мне нравится устанавливать другую переменную сеанса в более поздней точке, мне нужно снова открыть сеанс session_start () еще раз. Это работает, но поскольку я уже отправляю код клиенту, он печатает «заголовки, уже отправленные» -warnings. Почему он пытается снова установить cookie? Файл cookie уже установлен. Единственное, что мне нужно – это снова получить доступ к записи файлов сеансов на сервере.

Ну, я могу их подавить. Но есть ли способ возобновить сеанс, который был закрыт session_write_close без повторной отправки заголовка Cookie? Заголовок cookie уже отправлен первым session_start (). Таким образом, второй должен просто вернуть мне доступ к записи файлов сеанса, хранящихся на веб-сервере.

<?php session_start(); // setting all the session vars I like to set session_write_close(); // <-- // To allow parallel requests by the same user, while this script is still running // Code that takes some time to execute // It also prints output, so no more cookie headers after this point @session_start(); // <-- works, but I like to use it without suppressing warnings $_SESSION['key'] = 'new value I like to store'; session_write_close(); ?> 

 session_start(); ... session_write_close(); ... ini_set('session.use_only_cookies', false); ini_set('session.use_cookies', false); ini_set('session.use_trans_sid', false); ini_set('session.cache_limiter', null); session_start(); // second session_start 

Это предотвратит php от вызова php_session_send_cookie() второй раз.
Смотрите, как работает .

Хотя реструктуризация скриптов по-прежнему кажется лучшим вариантом

EDIT См. Решение @ VolkerK, это лучше, чем этот.

Просто будьте осторожны с выходом вашего скрипта во время его выполнения, чтобы предотвратить отправку заголовков и вывести его в самом конце:

 <?php session_start(); // setting all the session vars I like to set session_write_close(); // Start output buffer ob_start(); // Code that takes some time to execute // Do session stuff at the end of the script session_start(); $_SESSION['key'] = 'new value I like to store'; session_write_close(); // Send output to client ob_end_flush(); 

Ссылка: функции управления выходом