這篇文章講述了session裡的數據存入到memcache中,很多同學可能都不太了解session裡的數據存入到memcache,那麼我們今天就來詳細的講一下session的數據是如何存入到memcache中的吧!
將session的資料儲存到memcache中
session的資料預設情況下,儲存在file檔案中
但是我們可以透過修改php的配置,讓他儲存在其他地方
(1)、開啟D:\lamp\php/php.ini。 session.save_handler = files是開著的,把它註釋了
Session內容儲存路徑,添加畫紅線的那句話
修改了測試一下
#Session.php##
<?php session_start(); $_SESSION['name']='whj'; ?>
Get_session.php
<?php session_start(); $name=$_SESSION['name']; echo $name; ?>
輸出whj正確
(2)、但是如何得到session變數的時候,不再是name屬性,而是透過session_id來保存的
session_id :瀏覽器存取伺服器的時候,伺服器給瀏覽器分配session_id然後在透過 session_id找對應的值
例:
session_start(); $_SESSION['age']='whjwhj'; $sess_id=session_id(); var_dump($sess_id); //运行出来是string(26) "dmkppdo0qhbkq099fo608an383",在telnet中运行get dmkppdo0qhbkq099fo608an383的出age|s:6:"whjwhj";
如果沒有權限修改php的設定怎麼辦?
ini_set() 可以在php檔案中,設定php的一些設定
安全性問題:現在誰都可以訪問我的memcache,別人訪問我的telnet 192.168.2.200也能訪問,
解決之道:防火牆
上面session的使用時修改了php.ini設定文件,現在做的是不用修改設定檔直接在檔案開頭加上:
ini_set('session.save_handler','memcache'); ini_set('session.save_path','tcp://127.0.0.1:11211');告诉它是用session保存到memcache的
範例:
Ini_session.php
<?php ini_set('session.save_handler','memcache'); ini_set('session.save_path','tcp://127.0.0.1:11211'); session_start(); class Hot{ public $name; public $color; public function __construct($name,$color){ $this->name=$name; $this->color=$color; } } $hot=new Hot('xiaobei','white'); $_SESSION['hot']=$hot; ?>
Get_ini_session.php
<?php ini_set('session.save_handler','memcache'); ini_set('session.save_path','tcp://127.0.0.1:11211'); session_start(); class Hot{ public $name; public $color; public function __construct($name,$color){ $this->name=$name; $this->color=$color; } } $hot=$_SESSION['hot']; var_dump($hot); ?>
#7、Memcache 的生存週期:
重啟memcached、重啟作業系統會導致全部資料消失。另外,內容容量達到指定值之後,就基於LRU(Least Recently Used)演算法自動刪除不使用的快取。
如果設定expire為0,表示永遠不過期,直到機器重新啟動或服務重新啟動
以上是session資料保存到memcache的方法講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!