国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Session_set_save_handler 之 文本模式實現

2019-11-15 01:39:31
字體:
來源:轉載
供稿:網友
session_set_save_handler 之 文本模式實現

1、構建session抽象類,實現Session_set_save_hanlder函數必須的基礎函數

<?php    /* 實現session利用文件形式或者數據庫等其它形式進行存儲操作     * author:Libin     * Data:2014-06-24     * 抽象頂層    */    abstract class session {        /* open::設置存儲路徑 */        abstract public function open();        /* close::關閉存儲模式句柄 */        abstract public function close();        /* read::根據key查詢對應的value,典型的鍵值對 */        abstract public function read($key);        /* write::寫session */        abstract public function write($key,$value);        /* destory::銷毀某key的session */        abstract public function destory($key);        /* gc::回收機制,清除過期指定時間(分鐘)session數據 */        abstract public function gc($min = 0);        /* start::開啟session方法重寫 */        abstract public function start();    }?>
View Code

2、編寫txt文本模式具體方法實現類

<?php    /* 實現session利用文件形式或者數據庫等其它形式進行存儲操作     * author:Libin     * Data:2014-06-24     * 文本(txt)實現方法    */    class session_txt extends session {                /* 變量存儲 */        PRivate $save_path   = '';//session保存路徑        private $file_path   = '';//session文件路徑        private $save_name   = '';//session命名        private $save_hand   = null;//資源句柄        private $save_prefix = 'mysession_';//session前綴                /* open::設置存儲路徑 */        final public function open(){            $this->save_path = 'D:/session';            if(!is_dir($this->save_path)){                if(!mkdir($this->save_path)){                    return false;                };            }            $this->gc();//啟用回收機制            return true;        }        /* close::關閉存儲模式句柄 */        final public function close(){            return true;        }        /* read::根據key查詢對應的value,典型的鍵值對 */        final public function read($key){            $this->set(__function__,$key);            $data = @fread($this->save_hand,filesize($this->file_path));            if(empty($data) || $data == ''){                return '';            }return $data;        }        /* write::寫session */        final public function write($key,$value){            $this->set(__function__,$key);            return @fwrite($this->save_hand,$value);        }        /* destory::銷毀某key的session */        final public function destory($key){            $this->set(__function__,$key);            return @unlink($this->file_path);        }        /* gc::回收機制,清除過期指定時間(分鐘)session數據 */        final public function gc($min = 10){            $hand = @opendir($this->save_path);//打開文件夾            while($file = @readdir($hand)){//遍歷文件夾                if(is_file($this->save_path.'/'.$file)){//如果為文件,排除.||..                    $fileatime = fileatime($this->save_path.'/'.$file);//獲取文件最后修改時間                    if(((time() - $fileatime) / 60) > $min){//如果時間相差大于$min分鐘                        unlink($this->save_path.'/'.$file);//執行文件清理功能                    }                }            }            return true;        }                #################################################################################                /* MAGIC __SET */        final public function __set($key,$value){            $this->$key = $value;            return true;        }                /* 獲取存儲句柄 */        final private function set($mode = 'read',$key){            $this->file_path = $this->save_path.'/'.$this->save_prefix.$key;//設置文件路徑            if($mode != 'read' && $mode != 'write'){return false;};            $mode = $mode == 'write' ? 'w' : 'r';//讀或寫            $this->save_hand = @fopen($this->file_path,$mode);        }                /* start::開啟session方法重寫 */        final public function start(){            @session_set_save_handler(array($this,'open'),array($this,'close'),array($this,'read'),array($this,'write'),array($this,'destory'),array($this,'gc'));            ob_start();            session_start();            ob_end_flush();        }    }?>
View Code

3、引入session.php,實現工廠模式最后一步

<?php    /* 實現session利用文件形式或者數據庫等其它形式進行存儲操作     * author:Libin     * Data:2014-06-24     * 工廠模式    */    class _session_start {        /* 構造函數 */        static public function __start($mode = 'txt'){            require_once('session.class.php');//加載抽象方法            if(!require_once('function/'.$mode.'.php')){                return false;            }else{                $session_handle     = 'session_'.$mode;                $handler             = new $session_handle();                $handler->start();            }        }    }    _session_start::__start('txt');//重寫session函數開始?>

PS::明兒個編寫MySQL實現此功能,今天就到此為止啦啦啦!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉黎县| 衡水市| 巫山县| 汝城县| 连南| 泰宁县| 临海市| 辽源市| 双牌县| 左权县| 隆子县| 通河县| 普安县| 宁阳县| 浪卡子县| 柳州市| 江津市| 宁化县| 双流县| 虞城县| 厦门市| 肇州县| 望奎县| 班玛县| 白朗县| 洛宁县| 苍南县| 静海县| 上高县| 平凉市| 湖北省| 中西区| 湖北省| 遂川县| 思南县| 玉门市| 临颍县| 邯郸县| 靖边县| 溆浦县| 大同市|