首頁  >  文章  >  後端開發  >  session資料保存到memcache的方法講解

session資料保存到memcache的方法講解

韦小宝
韦小宝原創
2018-03-14 12:46:421423瀏覽

這篇文章講述了session裡的數據存入到memcache中,很多同學可能都不太了解session裡的數據存入到memcache,那麼我們今天就來詳細的講一下session的數據是如何存入到memcache中的吧!

session的資料儲存到memcache

session的資料預設情況下,儲存在file檔案中

但是我們可以透過修改php的配置,讓他儲存在其他地方

(1)、開啟D:\lamp\php/php.inisession.save_handler = files是開著的,把它註釋了

 

Session內容儲存路徑,添加畫紅線的那句話

修改了測試一下

#Session.php##

<?php
session_start();
$_SESSION[&#39;name&#39;]=&#39;whj&#39;;
?>

Get_session.php

<?php
session_start();
$name=$_SESSION[&#39;name&#39;];
echo $name;
?>

輸出whj正確

(2)、但是如何得到session變數的時候,不再是name屬性,而是透過session_id來保存的

session_id :瀏覽器存取伺服器的時候,伺服器給瀏覽器分配session_id然後在透過 session_id找對應的值

例:

session_start();
$_SESSION[&#39;age&#39;]=&#39;whjwhj&#39;;
$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(&#39;session.save_handler&#39;,&#39;memcache&#39;);
ini_set(&#39;session.save_path&#39;,&#39;tcp://127.0.0.1:11211&#39;);告诉它是用session保存到memcache的

範例:

Ini_session.php

<?php
ini_set(&#39;session.save_handler&#39;,&#39;memcache&#39;);
ini_set(&#39;session.save_path&#39;,&#39;tcp://127.0.0.1:11211&#39;);
session_start();
class Hot{
         public $name;
         public $color;
         public function __construct($name,$color){
                   $this->name=$name;
                   $this->color=$color;
                   }
         }
 $hot=new Hot(&#39;xiaobei&#39;,&#39;white&#39;);
 $_SESSION[&#39;hot&#39;]=$hot;
?>

Get_ini_session.php

<?php
ini_set(&#39;session.save_handler&#39;,&#39;memcache&#39;);
ini_set(&#39;session.save_path&#39;,&#39;tcp://127.0.0.1:11211&#39;);
session_start();
class Hot{
         public $name;
         public $color;
         public function __construct($name,$color){
                   $this->name=$name;
                   $this->color=$color;
                   }
         }
$hot=$_SESSION[&#39;hot&#39;];
var_dump($hot);
?>

#7Memcache 的生存週期:

重啟memcached、重啟作業系統會導致全部資料消失。另外,內容容量達到指定值之後,就基於LRU(Least Recently Used)演算法自動刪除不使用的快取。

如果設定expire0,表示永遠不過期,直到機器重新啟動或服務重新啟動

 相關文章:
php會話控制session、cookie介紹

以上是session資料保存到memcache的方法講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn