PHP で別プロセス(バッチ)にセッションをコピーする検証


PHP で別プロセス(バッチ)にセッションをコピーする検証をしてみました。
バッチ側にセッションIDを渡して、独立したセッションでセッション変数を複製してみます。

ブラウザ→test2f.php起動→test2t.php起動 という流れです。

■test2f.php (WEBアプリ側)
—————————————————————————
<?php
session_start();
$sess = session_id();
$_SESSION[‘param’] = array(“hoge1”, “hoge2”, “hoge3”);
$cmd = “php test2t.php $sess”;
exec($cmd, $out, $sts);
error_log(“status:”. $sts, 0);
—————————————————————————

■test2t.php(バッチ側)
—————————————————————————
<?php
session_start();
$path = session_save_path().”/sess_”.$argv[1];
session_decode(file_get_contents($path));
error_log(“session_id:”. $argv[1], 0);
error_log(“save_path:”. $path, 0);
error_log(“SESSION:”. print_r($_SESSION,true), 0);
—————————————————————————

■検証結果
—————————————————————————
error_log
[17-Dec-2016 20:09:17 Asia/Tokyo] session_id:b70aau4m3jghr2ge4072fgiik0
[17-Dec-2016 20:09:17 Asia/Tokyo] save_path:/var/lib/php/sessions/sess_b70aau4m3jghr2ge4072fgiik0
[17-Dec-2016 20:09:17 Asia/Tokyo] SESSION:Array
(
    [param] => Array
        (
            [0] => hoge1
            [1] => hoge2
            [2] => hoge3
        )

)

[17-Dec-2016 20:09:17 Asia/Tokyo] status:0
—————————————————————————

error_log を見ると、セッションの複製は成功していることが分かります。