$_SESSION
session_start()
で$_SESSION
が出来て、読み書きできる。この時、他で書き換わったら、反映されるの? 読み書きのが反映されるタイミングとは?session_destroy()
を実行した後も、$_SESSION
は消えない(つまりその時の値を保持し続けている)。このとき、値を書き込んだらどうなるの?
答えの予想: $_SESSION
は, session_start()
で作られ、常に同期がとられるが、 session_destroy()
で同期が切れるので、単なる変数となる。
ホントの答え: セッション情報の(普通はクッキーへの)書き出しは、PHPスクリプト実行終了時に起こる(つまり、できたページが HTTP サーバから送出される前)。 session_write_close()
でPHPスクリプト処理途中で強制的に書き出し、セッションを閉じることができる。セッション情報はロックされて排他処理される。だから、フレームを使った Web ページは手動で閉じるべき。