PHP 5.4.12 を使用しています
私は2つのクラスを持っています
<?php
class MySessionHandler implements SessionHandlerInterface {
//..
}
$handler = new MySessionHandler();
session_set_save_handler($handler,true);
?>
と
<?php
class MySession {
//..
function __destruct() {
session_write_close();
echo 'called';
}
}
このコードでは、MySession のデストラクタが呼び出されることはありません。
<?php
require_once 'MySessionHandler.php';
include_once 'MySession.php';
$test = new MySession();
しかし、このコードでは、「MySession」デストラクタはokと呼ばれています
<?php
require_once 'MySessionHandler.php';
include_once 'MySession.php';
class Test {
function __construct() {
$test = new MySession();
}
}
$obj = new Test();
session_set_save_handler($handler,true/false) をテストしました。session_write_close() に問題があるため、MySession のデストラクタを呼び出す必要があります。明示的に呼び出す必要があります。そうしないと、セッションがサーバーに書き込まれません。
これに関する回避策はありますか?コードを根元まで単純化しましたが、__destruct メソッドが呼び出されるべきときに呼び出されません。