国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

PHP 線程安全與非線程安全版本的區(qū)別深入解析

2024-05-04 23:12:25
字體:
供稿:網(wǎng)友

從2000年10月20日發(fā)布的第一個(gè)Windows版的PHP3.0.17開始的都是線程安全的版本,這是由于與Linux/Unix系統(tǒng)是采用多進(jìn)程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式。如果在IIS下以CGI方式運(yùn)行PHP會(huì)非常慢,這是由于CGI模式是建立在多進(jìn)程的基礎(chǔ)之上的,而非多線程。

一般我們會(huì)把PHP配置成以ISAPI的方式來運(yùn)行,ISAPI是多線程的方式,這樣就快多了。但存在一個(gè)問題,很多常用的PHP擴(kuò)展是以Linux/Unix的多進(jìn)程思想來開發(fā)的,這些擴(kuò)展在ISAPI的方式運(yùn)行時(shí)就會(huì)出錯(cuò)搞垮IIS。因此在IIS下CGI模式才是PHP運(yùn)行的最安全方式,但CGI模式對(duì)于每個(gè)HTTP請(qǐng)求都需要重新加載和卸載整個(gè)PHP環(huán)境,其消耗是巨大的。

為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進(jìn)程重復(fù)利用而不是每一個(gè)新的請(qǐng)求就重開一個(gè)進(jìn)程。同時(shí)FastCGI也可以允許幾個(gè)進(jìn)程同時(shí)執(zhí)行。這樣既解決了CGI進(jìn)程模式消耗太大的問題,又利用上了CGI進(jìn)程模式不存在線程安全問題的優(yōu)勢(shì)。

因此,如果是使用ISAPI的方式來運(yùn)行PHP就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運(yùn)行PHP的話就沒有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。

PHP官方上關(guān)于widows的版本有4個(gè):VC9 x86 Non Thread Safe,VC9 x86 Thread Safe,VC6 x86 Non Thread Safe,VC6 x86 Thread Safe;那么有什么區(qū)別呢?

1.支持的服務(wù)器不同
VC9版本是針對(duì)IIS服務(wù)器的版本,沒有對(duì)APACHE的支持,而VC6版本對(duì)IIS和apache都提供了支持

VC6 是什么?
VC6 就是 legacy Visual Studio 6 compiler ,就是使用這個(gè)編譯器編譯的。
VC9 是什么?
VC9 就是 the Visual Studio 2008 compiler ,就是用微軟的 VS 編輯器編譯的。

那我們?nèi)绾芜x擇下載哪個(gè)版本的 PHP 呢?
如果你是在 windows 下使用 Apache+PHP 的,請(qǐng)選擇 VC6 版本;
如果你是在 windows 下使用 IIS+PHP 的,請(qǐng)選擇 VC9 版本;

2.運(yùn)行方式的不同
PHP有2中運(yùn)行方式:ISAPI和FastCGI。

ISAPI執(zhí)行方式是以DLL動(dòng)態(tài)庫(kù)的形式使用,可以在被用戶請(qǐng)求后執(zhí)行,在處理完一個(gè)用戶請(qǐng)求后不會(huì)馬上消失,所以需要進(jìn)行線程安全檢查,這樣來提高程序的執(zhí)行效率,所以如果是以ISAPI來執(zhí)行PHP,建議選擇Thread Safe版本;

而FastCGI執(zhí)行方式是以單一線程來執(zhí)行操作,所以不需要進(jìn)行線程的安全檢查,除去線程安全檢查的防護(hù)反而可以提高執(zhí)行效率,所以,如果是以FastCGI來執(zhí)行PHP,建議選擇Non Thread Safe版本。

對(duì)于apache服務(wù)器來說一般選擇isapi方式,而對(duì)于nginx服務(wù)器則選擇FastCGI方式。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黔西| 玉树县| 八宿县| 富源县| 凤凰县| 巫山县| 扶余县| 宝山区| 罗田县| 四平市| 临西县| 时尚| 云浮市| 双桥区| 赣榆县| 杭州市| 广灵县| 广饶县| 张家川| 喀喇沁旗| 锦屏县| 合江县| 平南县| 仪征市| 龙游县| 丹江口市| 霍城县| 潼关县| 伽师县| 出国| 尚志市| 婺源县| 雷山县| 华宁县| 定兴县| 岳阳县| 龙海市| 林甸县| 庄河市| 泽州县| 泽库县|