[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レコードどちらかでも削除されれば動いていると思う
のですが、両方削除されないのです。
  }

どなたかご存じの方、申し訳ございませんがご指導宜しくお願いいたします。

井上 大悟