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 を見ると、セッションの複製は成功していることが分かります。