PHP
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛,主要適用于Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。
用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
Session
Session:在計算機中,尤其是在網絡應用中,稱為“會話控制”。Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。
當會話過期或被放棄后,服務器將終止該會話。Session 對象最常見的一個用法就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。有關使用 Session 對象的詳細信息,請參閱“ASP 應用程序”部分的“管理會話”。注意 會話狀態僅在支持 cookie 的瀏覽器中保留。
PHP.INI配置:Session配置詳細說明教程
網上有很多PHP.INI文件配置的中文說明,但是對于PHP初學者來說在進行PHP運行環境搭建配置時還是容易一頭霧水,今天換一種角度來分享如何進行php.ini配置,以求達到解決實際問題的效果,開篇以PHP教程方式詳細介紹如何通過php.ini來配置Session,以實現基本的Session應用。
我們知道在利用PHP進行購物車、用戶登錄等交互式網站開發時,Session是一種很好的解決方法,如果采用XAMPP,AppServ等PHP安裝包,一般情況下,PHP Session設置系統都會配置如果采用手動配置PHP運行環境,就需要我們通過php.ini來對Session進行配置,下面詳細介紹如何進行Session配置。
PHP運行環境說明
我采用的是DedeAMPZ,PHP版本5.2.4,如果你是手動安裝PHP運行環境,你需要將php.ini-dist或者php.ini-recommended重命名為php.ini,并將其復制在windows目錄下。
php.ini中的session配置說明
下面介紹能讓session運行的必要配置步驟
手動配置PHP運行環境時,最容易遺忘的一項是服務器端session文件的存儲目錄配置工作,打開php.ini文件,搜索Session,找到session.save_path,默認值為/tmp,代表session文件保存在c:/tmp目錄下,默認tmp目錄并沒有創建,你可以在c盤下創建tmp目錄,或者創建一個其他目錄,比如leapsoulcn,再修改session.save_path的值,并去掉;,即
session.save_path = ‘/leapsoulcn’;
注意事項:
1、一般為了保證服務器的安全,session.save_path值最好設置為外網無法訪問的目錄,另外如果你是在linux服務器下進行session配置,請務必同時配置此目錄為可讀寫權限,否則在執行session操作時會報錯。
2、在使用session變量時,為了保證服務器的安全性,最好將register_globals設置為off,以保證全局變量不混淆,在使用session_register()注冊session變量時,你可以通過系統全局變量$_SESSION來訪問,比如你注冊了leapsoulcn變量,你可以通過$_SESSION[‘leapsoulcn’]來訪問此變量。
session.save_path配置其他說明事項,從php.ini配置文件翻譯而來
你可以使用”N;[MODE;]/path”這樣模式定義該路徑,N是一個整數,表示使用N層深度的子目錄,而不是將所有數據文件都保存在一個目錄下。
[MODE;]可選,必須使用8進制數,默認600(=384),表示每個目錄下最多保存的會話文件數量。[MODE;]并不會改寫進程的umask。php不會自動創建這些文件夾結構。可使用ext/session目錄下的mod_files.sh腳本創建。如果該文件夾可以被不安全的用戶訪問(比如默認的”/tmp”),那么將會帶來安全漏洞。當N》0時自動垃圾回收將會失效,具體參見下面有關垃圾搜集的部分。
如果你服務器上有多個虛擬主機,建議針對每個不同的虛擬主機分別設置各自不同的目錄。
至此最基本的session配置就完成了,你只要保存php.ini,并重啟apache,即可使用session功能。
其他session配置說明
session.save_handler = ”files”
默認以文件方式存取session數據,如果想要使用自定義的處理器來存取session數據,比如數據庫,用”user”。
session.use_cookies = 1
是否使用cookies在客戶端保存會話sessionid,默認為采用cookies
session.use_only_cookies = 0
是否僅僅使用cookie在客戶端保存會話sessionid,這個選項可以使管理員禁止用戶通過URL來傳遞id,默認為0,如果禁用的話,客戶端如果禁用Cookie將使session無法工作。
session.name = “PHPSESSID”
當做cookie name來使用的session標識名
session.auto_start = 0
是否自動啟動session,默認不啟動,我們知道在使用session功能時,我們基本上在每個php腳本頭部都會通過session_start()函數來啟動session,如果你啟動這個選項,則在每個腳本頭部都會自動啟動session,不需要每個腳本頭部都以session_start()函數啟動session,推薦關閉這個選項,采用默認值。
session.cookie_lifetime = 0
傳遞sessionid的Cookie有效期(秒),0表示僅在瀏覽器打開期間有效。
session.gc_probability = 1
session.gc_divisor = 100
定義在每次初始化會話時,啟動垃圾回收程序的概率。計算公式如下:session.gc_probability/session.gc_divisor,比如1/100,表示有1%的概率啟動啟動垃圾回收程序,對會話頁面訪問越頻繁,概率就應當越小。建議值為1/1000~5000。
session.gc_maxlifetime = 1440
設定保存的session文件生存期,超過此參數設定秒數后,保存的數據將被視為’垃圾’并由垃圾回收程序清理。判斷標準是最后訪問數據的時間(對于FAT文件系統是最后刷新數據的時間)。如果多個腳本共享同一個session.save_path目錄但session.gc_maxlifetime不同,將以所有session.gc_maxlifetime指令中的最小值為準。
如果你在session.save_path選項中設定使用子目錄來存儲session數據文件,垃圾回收程序不會自動啟動,你必須使用自己編寫的shell腳本、cron項或者其他辦法來執行垃圾搜集。
比如設置”session.gc_maxlifetime=1440″ (24分鐘):
cd /path/to/sessions; find -cmin +24 | xargs rm
以上是一些常用的session配置選項說明,更多的session配置選項說明你可以參考php.ini文件中的說明。
至此,在php.ini配置文件中對session進行配置的PHP教程就介紹完畢了,通過上面的步驟實踐與學習,基本的session功能都可以使用,至于session性能等其他方面則需要根據服務器環境和需求進行微調了
評論
查看更多