phpsession緩存
A. memcache,session,php文件緩存的應用場景是哪些
memcache主要緩解資料庫壓力,用於數據經常交換,但又不即時的數據。
session記錄登錄者信息,也可以用memcache存儲,存儲量有限,讀取速度比mem慢
php文件緩存一般是新聞類較大內容的,很少改動的 數據存儲,像靜態頁面的生成。
B. php session 數據保存在哪裡
當然是在伺服器端,但不是保存在內存中,而是保存在文件或資料庫中。
默認情況下,php.ini
中設置的
SESSION
保存方式是
files(session.save_handler
=
files),即使用讀寫文件的方式保存
SESSION
數據,而
SESSION
文件保存的目錄由
session.save_path
指定,文件名以
sess_
為前綴,後跟
SESSION
ID,如:sess_。文件中的數據即是序列化之後的
SESSION
數據了。
如果訪問量大,可能產生的
SESSION
文件會比較多,這時可以設置分級目錄進行
SESSION
文件的保存,效率會提高很多,設置方法
為:session.save_path="N;/save_path",N
為分級的級數,save_path
為開始目錄。
當寫入
SESSION
數據的時候,PHP
會獲取到客戶端的
SESSION_ID,然後根據這個
SESSION
ID
到指定的
SESSION
文件保存目錄中找到相應的
SESSION
文件,不存在則創建之,最後將數據序列化之後寫入文件。讀取
SESSION
數據是也是類似的操作流程,對讀出來的數據需要進行解序列化,生成相應的
SESSION
變數。
C. PHP實現負載均衡session共享redis緩存操作示例
本文實例講述了PHP實現負載均衡session共享redis緩存操作。分享給大家供大家參考,具體如下:
1、首先先創建html表單頁面
<meta
chatset='utf-8'>
<center>
<form
action="se.php"
method="post">
<table>
<tr>
<td>帳號:</td>
<td><input
type="text"
name="username"></td>
</tr>
<tr>
<td>密碼:</td>
<td><input
type="password"
name="pwd"></td>
</tr>
<tr>
<td></td>
<td><input
type="submit"
value="登錄"></td>
</tr>
</table>
</form>
</center>
2、創建接受表單的文件
<?php
header('content-type:text/html;charset=utf-8');
set_time_limit(10);
ini_set("session.save_handler",'redis');//開啟php.ini中的redis配置
ini_set("session.save_path","tcp://192.168.1.70:6379");//第一台伺服器的redis
session_start();//開啟session
$username
=
$_POST['username'];
$_SESSION['username']
=
$username;
echo
"<script>alert('登錄成功!');location.href='from.php'</script>";//登錄成功後跳轉到歡迎登錄頁面
?>
3、跳轉到from.php去判斷第一台伺服器的redis中的session是否存到了本台伺服器的session中
<?php
header('content-type:text/html;charset=utf-8');
set_time_limit(10);
ini_set("session.save_handler",'redis');//開啟php.ini中的redis配置
ini_set("session.save_path","tcp://192.168.1.70:6379");//第一台伺服器的redis
session_start();//開啟session
$username
=
isset($_SESSION['username'])
?
$_SESSION['username']
:
'';//判斷當前是否存在session
//$id
=
$_SESSION['PHPSESSID'];
//echo
$id;
if(empty($username)){
echo
"<script>alert('請重新登錄!');location.href='index.php'</script>";
}else{
echo
"歡迎".$username."登錄";
}
?>
這樣就簡單了實現了redis
session共享的功能,要測試的話需要兩台伺服器,建議使用linux
比較好用
linux上安裝redis可參考《Linux平台安裝redis及redis擴展的方法》
更多關於PHP相關內容感興趣的讀者可查看本站專題:《php緩存技術總結》、《PHP數組(Array)操作技巧大全》、《php字元串(string)用法總結》、《PHP錯誤與異常處理方法總結》、《php面向對象程序設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:Nginx
安裝筆記(含PHP支持、虛擬主機、反向代理負載均衡)PHP開發負載均衡指南PHP實現負載均衡下的session共用功能Thinkphp結合AJAX長輪詢實現PC與APP推送詳解PHP經典演算法集錦【經典收藏】php
分庫分表hash演算法php的hash演算法介紹PHP中對各種加密演算法、Hash演算法的速度測試對比代碼PHP實現的一致性Hash演算法詳解【分布式演算法】PHP實現負載均衡的加權輪詢方法分析