DOSEIの日記

技術メモ+日常ログ

$_SESSION

  • session_start()$_SESSION が出来て、読み書きできる。この時、他で書き換わったら、反映されるの? 読み書きのが反映されるタイミングとは?
  • session_destroy() を実行した後も、 $_SESSION は消えない(つまりその時の値を保持し続けている)。このとき、値を書き込んだらどうなるの?

答えの予想: $_SESSION は, session_start() で作られ、常に同期がとられるが、 session_destroy() で同期が切れるので、単なる変数となる。

ホントの答え: セッション情報の(普通はクッキーへの)書き出しは、PHPスクリプト実行終了時に起こる(つまり、できたページが HTTP サーバから送出される前)。 session_write_close()PHPスクリプト処理途中で強制的に書き出し、セッションを閉じることができる。セッション情報はロックされて排他処理される。だから、フレームを使った Web ページは手動で閉じるべき。