まず、私の具体的な質問です。これは機能するはずですか?
<?php
session_start();
$_SESSION['test']='TEST_CONTENT';
echo '1: ',$_SESSION['test'];
echo '<br>';
session_write_close();
echo '2: ',$_SESSION['test']
?>
さて、いくつかの背景情報。Frameset を使用した Web アプリケーションを使用しており (開始しないでください...いいえ、これを変更するお金はありません)、場合によっては SESSION 変数がデータベースに書き込まれていないことがわかりました! いくつかの困難なテストの後、2 つのフレームが同時にロードされていることがわかりました。これはほとんど発生しませんが、最初に呼び出されたフレームが 2 番目のフレームの後に終了しました。最初に呼び出されたフレームは、以前に作成されたコピーでセッションを上書きしていました (スクリプトの最後にセッションを書き込むため)。
私たちの解決策は、最初に呼び出されたフレームでできるだけ早く session_write_close() を呼び出すことですが、セッション変数を引き続き (100% 確実に) 読み取ることができるかどうかが懸念されます。