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