http://wz.csdn.net/url/707384/
可能很多PHPer都用到了PHP提供的Session功能,可以方便的進行會話功能處理,PHP服務端默認的session存儲是文件存放方式,在Windows上PHP默認的Session服務端文件存放在C:\WINDOWS\Temp下,*NIX下默認存放在/tmp下,如果說並發訪問很大或者session建立太多,在這兩個目錄下就會存在大量類似sess_xxxxxx的session文件,同一個目錄下文件數過多會導致性能下降,並且可能導致受到攻擊最終出現文件系統錯誤。針對這樣的情況,PHP本身體提供了比較好的解決辦法。
不少朋友可能都沒有註意到php.ini裡面Session設置部分中有這樣一項:
; session.save_path = "N;MODE;/path"
這項設置提供給我們可以給session存放目錄進行多級散列,其中“N”表示要設置的目錄級數,“MODE”表示目錄的權限屬性,默認為600,在 WINDOWS上基本是不用設置的,*NIX上也可以不用設置,後面的“/path”表示session文件存放的根目錄路徑,比如我們設置為下面的格式
session.save_path = "2;/tmp/phpsession"
上面的設置表示我們把/tmp/phpsession目錄作為php的session文件存放根目錄,在該目錄下進行兩級目錄散列,每一級目錄分別是0-9 和az共36個字母數字為目錄名,這樣存放session的目錄可以達到36*36個,相信作為單台服務器來說,這是完全夠用了,如果說您的系統架構設計為多台服務器共享session數據,可以把目錄級增加到3級或者更多。
需要注意的是,php自己並不會自動創建子目錄,需要您自己動手去創建,網上找到這樣的自動創建目錄的代碼,大家可以做個參考。下面的代碼自動創建3級子目錄,可以自己動手根據需要進行修改。
set_time_limit(0);
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));
mkdir($param);
}
}
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
for($k = 0; $k < $length; $k++) {
makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
}
}
}
?>
大家可能注意到前面的文字中提到了有關多服務器共享php的SESSION,這是很多應用都會遇到的問題,網上也有不少相關的資源,大家可以去google一下,Michael這裡只提一下大概的思路。
一般來說我們用到最多的方法有兩種:
1、NFS或者Samba共享的方法,讓各個服務器上存放session文件的磁盤共享,這種方法簡單可行。
2、集中存儲到數據庫中,這是比較多的實現方法,通過php提供的session_set_save_handler()函數來重定義session函數,推薦使用這種方法。
歡迎大家一起交流和討論php中和session相關的技巧和經驗。
http://blog.csdn.net/flashlm/archive/20 ... 60854.aspx
他們設置了哪些標籤:
WEB開發
誰收藏了這個網址:
conanpaul收錄
使用標籤:Web開發,時間:2007-11-1 15:36:26 | 相關網摘
可能很多PHPer都用到了PHP提供的Session功能,可以方便的進行會話功能處理,PHP服務端默認的session存儲是文件存放方式,在 Windows上PHP默認的Session服務端文件存放在C:\WINDOWS\Temp下,*NIX下默認存放在/tmp下,如果說並發訪問很大或者session建立太多,在這兩個目錄下就會存在大量類似sess_xxxxxx的session文件,同一個目錄下文件數過多會導致性能下降,並且可能導致受到攻擊最終出現文件系統錯誤。針對這樣的情況,PHP本身體提供了比較好的解決辦法。
不少朋友可能都沒有註意到php.ini裡面Session設置部分中有這樣一項:
; session.save_path = "N;MODE;/path"
這項設置提供給我們可以給session存放目錄進行多級散列,其中“N”表示要設置的目錄級數,“MODE”表示目錄的權限屬性,默認為600,在 WINDOWS上基本是不用設置的,*NIX上也可以不用設置,後面的“/path”表示session文件存放的根目錄路徑,比如我們設置為下面的格式
session.save_path = "2;/tmp/phpsession"
上面的設置表示我們把/tmp/phpsession目錄作為php的session文件存放根目錄,在該目錄下進行兩級目錄散列,每一級目錄分別是0-9 和az共36個字母數字為目錄名,這樣存放session的目錄可以達到36*36個,相信作為單台服務器來說,這是完全夠用了,如果說您的系統架構設計為多台服務器共享session數據,可以把目錄級增加到3級或者更多。
需要注意的是,php自己並不會自動創建子目錄,需要您自己動手去創建,網上找到這樣的自動創建目錄的代碼,大家可以做個參考。下面的代碼自動創建3級子目錄,可以自己動手根據需要進行修改。
<?php
set_time_limit(0);
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));
mkdir($param);
}
}
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
for($k = 0; $k < $length; $k++) {
makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
}
}
}
?>
大家可能注意到前面的文字中提到了有關多服務器共享php的SESSION,這是很多應用都會遇到的問題,網上也有不少相關的資源,大家可以去google一下,Michael這裡只提一下大概的思路。
一般來說我們用到最多的方法有兩種:
1、NFS或者Samba共享的方法,讓各個服務器上存放session文件的磁盤共享,這種方法簡單可行。
2、集中存儲到數據庫中,這是比較多的實現方法,通過php提供的session_set_save_handler()函數來重定義session函數,推薦使用這種方法。
歡迎大家一起交流和討論php中和session相關的技巧和經驗。
ession.save_path = '3;/tmp'
前往
- Software
- ↳ CodeCharge Studio
- ↳ CodeCharge
- ↳ DemoCharge
- ↳ SuperPDF
- ↳ 551einv
- ↳ E3進銷存
- 程式語言
- ↳ PHP
- ↳ CodeLobster PHP Edition
- ↳ Yii
- ↳ CodeIgniter
- ↳ Phalcon
- ↳ Symfony
- ↳ FuelPHP
- ↳ Zend Framework 2
- ↳ laravel
- ↳ WordPress
- ↳ ASP.NET/C#
- ↳ ASP/VBScript
- ↳ JSP
- ↳ Java Servlets
- ↳ ColdFusion
- ↳ Perl
- ↳ Java Script
- ↳ jQuery
- ↳ HTML + CSS
- ↳ jQuery
- ↳ nodejs
- ↳ VB6
- ↳ Git
- ↳ App Inventor 2
- ↳ bash
- ↳ C++/ VC/ OpenCV
- ↳ OpenCV
- ↳ go
- ↳ cordova
- ↳ python
- ↳ Xamarin
- ↳ Assembly
- 資料庫
- ↳ MySQL
- ↳ PostgreSQL
- ↳ ORACLE
- ↳ Access
- ↳ SQL Server
- ↳ SQLite
- ↳ MariaDB
- ↳ Mongodb
- 作業系統
- ↳ Linux
- ↳ Ubuntu
- ↳ CentOS
- ↳ Mint
- ↳ Mandriva
- ↳ Debian
- ↳ Red Hat Enterprise Linux
- ↳ Oracle Linux
- ↳ Fedora
- ↳ Kali Linux
- ↳ OpenSUSE
- ↳ Elementary OS
- ↳ Microsoft
- ↳ Server 2008 R2
- ↳ Server 2012 R2
- ↳ Server 2012
- ↳ 8
- ↳ 10
- ↳ System Center 2016
- ↳ NOVELL
- ↳ FreeBSD
- ↳ VMware
- ↳ VirtualBox
- ↳ Mac OS X
- ↳ Solaris
- ↳ iOS
- ↳ Android
- ↳ Cloud
- ↳ OpenStack
- ↳ Docker
- ↳ Proxmox VE
- ↳ CloudReady
- ↳ chrome
- 網頁伺服器
- ↳ apache
- ↳ tomcat
- ↳ nginx
- ↳ IIS
- ↳ JBoss
- ↳ weblogic
- ↳ WebHosting
- 硬體
- ↳ 硬體及週邊
- ↳ RouterOS
- ↳ LEGO NXT
- ↳ Arduino
- ↳ MSP430
- ↳ Raspberry Pi
- ↳ OpenERP
- ↳ Storage
- ↳ Server
- ↳ Brocade
- ↳ MODELS
- ↳ FortiGate
- 軟體
- ↳ sublime
- ↳ LibreNMS