操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    將PHP的數據存儲數據庫中的代碼實例

    更新時間:2016年06月24日 18:34:32 作者:烏龜殼

    這里我們將分享兩個將PHP的數據存儲到數據庫中的代碼實例,分別針對與MySQL,需要的朋友可以參考下

    一個開發環境有多個網站將數據保存到session,需要使用不同的,解決方案很多。不過這次也高大上一把,用數據庫存,方便以后擴展。

    首先是數據庫的部分

    --drop table php_session
    create unlogged table php_session
    (
      sess_id varchar(32) primary key,
      modify_time timestamp with time zone not null,
      sess_data varchar(3000) default ''
    );
    create index concurrently idx_php_session_modify_time on php_session(modify_time);
    --set_session(id, data)
    create or replace function set_session(varchar, varchar) returns void as $set_session$
      with upsert as (
        update php_session
        set modify_time = current_timestamp, sess_data = $2
        where sess_id = $1
        returning 1
      )
      insert into php_session (sess_id, modify_time, sess_data)
      select $1, current_timestamp, $2
      where not exists (
        select 1 from upsert
      );
    $set_session$ language sql;
    --get_session(id)
    create or replace function get_session(varchar) returns varchar as $get_session$
      select sess_data from php_session where sess_id = $1
    $get_session$ language sql;
    --del_session
    create or replace function del_session(varchar) returns void as $del_session$
      delete from php_session where sess_id = $1
    $del_session$ language sql;
    

    將數據保存到session_php session保存 tmp_springmvc保存session

    --gc_session create or replace function gc_session() returns void as $del_session$ delete from php_session where modify_time < current_timestamp - interval '30 days' $del_session$ language sql;

    然后是PHP的部分

    將數據保存到session_springmvc保存session_php session保存 tmp

    register_shutdown_function('session_write_close'); ?>

    然后只要在之前調用這個就可以了

    至于將數據保存到session,那是我定義的一個常量,表示一個指向數據庫的鏈接而已。

    MySQL版

    再總結一個針對MySQL的集成更多基礎功能的例子:

    表結構:

     CREATE TABLE IF NOT EXISTS `sessioninfo` (
     `sid` varchar(255) NOT NULL,
     `value` text NOT NULL,
     `expiration` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (`sid`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    信息存儲到數據庫的類:

    class MySessionHandler implements SessionHandlerInterface {
     
      /**
      * @access private
      * @var object 數據庫連接
      */
      private $_dbLink;
      /**
      * @access private
      * @var string 保存session的表名
      */
      Private $_sessionTable;
      /**
      * @access private
      * @var string session名
      */
      private $_sessionName;
      /**
      * @const 過期時間
      */
    

    php session保存 tmp_將數據保存到session_springmvc保存session

    const SESSION_EXPIRE = 10; public function __construct($dbLink, $sessionTable) { if(!is_object($dbLink)) { return false; } $this->_dbLink = $dbLink; $this->_sessionTable = $sessionTable; } /** * 打開 * @access public * @param string $session_save_path 保存session的路徑 * @param string $session_name session名 * @return integer */ public function open($session_save_path, $session_name) { $this->_sessionName = $session_name; return 0; } /** * 關閉 * @access public * @return integer */ public function close() { return 0; } /** * 關閉session * @access public * @param string $session_id session ID * @return string */ public function read($session_id) { $query = "SELECT value FROM {$this->_sessionTable} WHERE sid = {$session_id} AND UNIX_TIMESTAMP(expiration) + " . self::SESSION_EXPIRE . " > UNIX_TIMESTAMP(NOW())"; $result = $this->_dbLink->query($query);

    將數據保存到session_php session保存 tmp_springmvc保存session

    if(!isset($value) || empty($value)) { $value = ""; return $value; } $this->_dbLink->query("UPDATE {$this->_sessionTable} SET expiration = CURRENT_TIMESTAMP() WHERE sid = {$session_id}"); $value = $result->fetch_array(); $result->free(); return $value['value']; } /** * 寫入session * @access public * @param string $session_id session ID * @param string $session_data session data * @return integer */ public function write($session_id, $session_data) { $query = "SELECT value FROM {$this->_sessionTable} WHERE sid = '{$session_id}' AND UNIX_TIMESTAMP(expiration) + " . self::SESSION_EXPIRE . " > UNIX_TIMESTAMP(NOW())"; $result = $this->_dbLink->query($query); $result = $result->fetch_array(); if(!empty($result)) { $result = $this->_dbLink->query("UPDATE {$this->_sessionTable} SET value = {$session_data} WHERE sid = {$session_id}"); } else{ $result = $this->_dbLink->query("INSERT INTO {$this->_sessionTable} (sid, value) VALUES ('{$session_id}', '{$session_data}')"); } if($result){ return 0; } else{ return 1; } } /** * 銷魂session * @access public * @param string $session_id session ID * @return integer

    將數據保存到session_php session保存 tmp_springmvc保存session

    */ public function destroy($session_id) { $result = $this->_dbLink->query("DELETE FROM {$this->_sessionTable} WHERE sid = '{$session_id}'"); if($result){ return 0; } else{ return 1; } } /** * 垃圾回收 * @access public * @param string $maxlifetime session 最長生存時間 * @return integer */ public function gc($maxlifetime) { $result = $this->_dbLink->query("DELETE FROM {$this->_sessionTable} WHERE UNIX_TIMESTAMP(expiration) < UNIX_TIMESTAMP(NOW()) - " . self::SESSION_EXPIRE); if($result){ return 0; } else{ return 1; } } }

    $dbLink = new mysqli("localhost", "root", "root", "test");
    $sessionTable = "sessioninfo";
     
    $handler = new MySessionHandler($dbLink, $sessionTable);
    session_set_save_handler($handler);
    session_start();
    $_SESSION['name'] = "test";
    echo $_SESSION["name"];
    //session_destroy();
    

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有