路老闆個人品牌網站
0
  • 會員登入
  • 關於我們
    回主選單
    • 關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    回主選單
    • 線上課程
    • 預約服務
    • 活動報名
  • 商品總覽
  • 創作與紀錄
    回主選單
    • 部落格
    • 影像紀錄
    • Podcast
    • 我的作品
  • 最新消息
  • 聯絡我們
  • Join us
  • Login
  • 0
    路老闆個人品牌網站
  • 關於我們
    關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    線上課程 預約服務 活動報名
  • 商品總覽
  • 創作與紀錄
    部落格 影像紀錄 Podcast 我的作品
  • 最新消息
  • 聯絡我們
部落格
  • 文章總覽
  • 分類
  • 技術筆記
  • 日本旅遊
  • 網站搬家
  • 時事觀察
  • 投資理財
  • 公司經營
  • 主機架設
  • 接案
  • 遊戲心得
  • 產品開箱
  • 網頁相關
  • 金流串接
  • 遊戲經濟
  • 閒聊
  • 直銷
  • CodeIgniter
  • cpanel
  • 出書材料
  • 個人品牌
  • SEO
  • 讀書心得
  • 金流物流
  • 線上課程心得
  • 日劇
    • 大河劇
      • 真田丸
  • AI
91app ClubHouse php8 imunify360 cdn apache php nginx linode digitalocean
  1. 首頁
  2. 部落格
  3. [CodeIgniter] 把 session 寫入db

[CodeIgniter] 把 session 寫入db

2012 Dec 08 未分類

有些主機商很嚴格的管制 session 寫入次數
我想是因為 session 操作很吃主機資源吧...



最近越來越常遇到這類的主機
(尤其是客人自己亂買的)
(不過也不乏台灣主流市場的主機)

有時候明明下了 session 寫入的指令
再讀出來就是沒變
最常遇到的狀況就是出現在購物車
產品怎麼加入購物車都沒用

一開始也不曉得是什麼問題
傻傻的去翻 CodeIgniter 的 library
debug了半天還是不知道哪裡出問題



偶然翻到 CodeIgniter 可以把內建的 session function
改成寫入到資料庫
方法很簡單

首先
在 db 開一個 table


CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(45) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);


table name 是 ci_sessions
table name 可以自己改成別的名字 是ok的
底下會進一步說明



第二步就是在 application/config/config.php 中找到


$config['sess_use_database'] = FALSE;

把它改成


$config['sess_use_database'] = TRUE;

即可

之後 CodeIgniter 的 Session 類別
就會透過 db 去存取 自己的 session 資料

如果要改資料庫名稱
可以找到這行

$config['sess_table_name'] = 'ci_sessions';

把紅色的 table name 改成自己想要的名稱即可
記得 db 的 table 也是要這個名字
不然會無法讀寫




這樣一改
可以解決不少問題

第一點就是
不管主機商怎麼亂改 session 的設定
你都不用擔心 因為你的 session 其實是
透過 CodeIgniter 的 Session Library 寫到 db 去的

(但是php原生的 session library 還是不會寫到db去喔)

第二點是
當你的網站規模變大的時候 (我也好想規模變大阿)
可以解決多部主機 session 同步的問題
因為如果以原生php session的方式
session 是以檔案的方式存在主機中
要透過使用網路硬碟的方式才能多台 web server 同步
如果使用 db 當做 session 存取
就可以解決這個問題


  • 分享此文章
0則留言

相關文章

[心得分享] SDX 2016 搜尋行銷及網路數據分析年會

痞客邦新功能「POI - 餐廳卡片」

GDPR 對網頁設計的影響

mysql 密碼初始化

[觀後感想] 行政院經濟動能推升方案廣告

每年都重來的網站 到底還要重來幾次?

關於路老闆

推薦連結

  • Alice 你的理財陪跑教練
  • 羅鈞鴻/小虎老師
  • 徐慧玲Lynn
  • 寶寶牙醫 沈醫師
  • 保險資訊懶人包
  • 你的好感度教練
  • 天下為暢

聯絡我們

  • Email: louis@boss-louis.tw
  • 營業時間: 09:00~18:00
  • 聯絡電話: 02-77252950
  • 地址: 106 台北市大安區忠孝東路四段270號17樓
  • 隱私權政策
COPYRIGHT ©路老闆個人品牌網站 All rights reserved | Powered by 路老闆