デフォルトのセッションパスを使用するとどういうわけか動作が不安定になるので
(レンタルサーバー会社に連絡してサーバーの再起動をしてもらうと直るのだが・・・面倒!)
パスを変えて使ってみると安定した。
ただひとつ問題が・・・
セッションタイムアウトしない!
php.iniもいじれず・・・
session_cache_expire()を使ってもタイムアウトせず・・・
困ったなーと思っていたが何とか解決しました。
結局、セッションファイルをチェックして一定時間が経過したら削除するという
ちょっと強引な方法で今のところ問題なく動作しています。
filemtime関数でファイルの更新時刻を取得し
指定した時間が経過したら削除するという方法で。
session_start() をするとこの更新時刻は更新されるため
使っている間は削除されないということになります。
使用方法はページを移動するたびにタイムアウト関数を走らせています。
※ session_start() よりも前に書きます。
以下の例ではタイムアウトの時間は10分に設定しています。
参考にしたページはこちら
http://www.phppro.jp/qa/449
// =========================================================
// セッションのタイムアウト制御
// =========================================================
function session_timeout() {
//セッション有効時間(秒)
$KeepAliveTime = 600;
//セッションデータパス
$sesspath = session_save_path();
//タイムアウトしたセッションデータを検索&削除
foreach (glob("$sesspath/sess_*") as $fname) {
if(filemtime($fname) + $KeepAliveTime < time()) {
@unlink($fname);
}//end if
}//end foreach
}//end function
(レンタルサーバー会社に連絡してサーバーの再起動をしてもらうと直るのだが・・・面倒!)
パスを変えて使ってみると安定した。
ただひとつ問題が・・・
セッションタイムアウトしない!
php.iniもいじれず・・・
session_cache_expire()を使ってもタイムアウトせず・・・
困ったなーと思っていたが何とか解決しました。
結局、セッションファイルをチェックして一定時間が経過したら削除するという
ちょっと強引な方法で今のところ問題なく動作しています。
filemtime関数でファイルの更新時刻を取得し
指定した時間が経過したら削除するという方法で。
session_start() をするとこの更新時刻は更新されるため
使っている間は削除されないということになります。
使用方法はページを移動するたびにタイムアウト関数を走らせています。
※ session_start() よりも前に書きます。
以下の例ではタイムアウトの時間は10分に設定しています。
参考にしたページはこちら
http://www.phppro.jp/qa/449
// =========================================================
// セッションのタイムアウト制御
// =========================================================
function session_timeout() {
//セッション有効時間(秒)
$KeepAliveTime = 600;
//セッションデータパス
$sesspath = session_save_path();
//タイムアウトしたセッションデータを検索&削除
foreach (glob("$sesspath/sess_*") as $fname) {
if(filemtime($fname) + $KeepAliveTime < time()) {
@unlink($fname);
}//end if
}//end foreach
}//end function


コメントする