[PHP-users 7652] session_set_save_handler のgcについて
GO
php-users@php.gr.jp
Thu, 23 May 2002 11:53:51 +0900
初めまして、井上ともうします。
セッションデータをMySQLで使用してユーザー管理したいと思っています。
session_set_save_handlerを使用してopen,close,read,write,destroyは問題なく動
いているのですが、gcだけなんの反応もありません。ログアウトしないときでも一定
時間が過ぎるとセッションのデータを全て削除したいと思っています。
以下の内容です。
環境
solaris8 2/02
Apache 1.3.22
php 4.0.6
MySQL 3.23.45
php.iniの設定
session.save_handler = user (filesでもgc以外動作しました。)
session.gc_probability = 100 (%で表すため100にする)
session.gc_maxlifetime = 10 (テストで10秒にしています。)
session.save_path = /tmp(MySQLを使用しているのでファイル作成されません。)
session_set_save_handlerの中のgcの内容
function RM_sess_gc($maxlife){
global $sess_value, $SessDBConn;
if(!$SessDBConn) return false;
//ここでテストしてみましたが、session.gc_maxlifetimeの10と表示されます。
echo $maxlife;
//ログアウトしないときタイムアウト
$sql = "delete from ".sess_table." where ".sess_sid." = '$sid'";
$sql .= " and ".sess_rdate." < (now() - $maxlife)";
mysql_query($sql , $SessDBConn);
//$sidテーブルをタイムアウト時に削除
$dt = "drop table $sid";
mysql_query($dt, $SessDBConn);
return true;
//$sidテーブルかsessionレコードどちらかでも削除されれば動いていると思う
のですが、両方削除されないのです。
}
どなたかご存じの方、申し訳ございませんがご指導宜しくお願いいたします。
井上 大悟