ヘッダーにすでに警告が送信されていない状態でPHPでセッションを再開するにはどうすればよいですか?
設定したいすべてのセッション変数を設定した後、session_write_close()でセッションを閉じます。これを行うのは、セッションが開いている限り、同じクライアントからのアクティブな接続は1つだけである可能性があるためです。しかし、私は複数の並列のものを持っているのが好きです。
ただし、後で別のセッション変数を設定したい場合は、session_start()を使用してセッションをもう一度開く必要があります。これは機能しますが、すでにクライアントにコードを送信しているため、「ヘッダーは既に送信されています」という警告が出力されます。なぜCookieを再設定しようとしているのですか?クッキーはすでに設定されています。必要なのは、サーバーにセッションファイルを再度書き込むためのアクセス権を取得することだけです。
まあ、私はそれらを抑制することができます。しかし、Cookieヘッダーを再送信せずにsession_write_closeで閉じられたセッションを再開する方法はありますか?Cookieヘッダーは、最初のsession_start()によってすでに正しく送信されています。したがって、2つ目は、Webサーバーに保存されているセッションファイルへの書き込みへのアクセスを許可する必要があります。
<?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();
?>