摘要:從年月日發(fā)布的第一個(gè)版的開(kāi)始的都是線程安全的版本,這是由于與系統(tǒng)是采用多進(jìn)程的工作方式不同的是系統(tǒng)是采用多線程的工作方式。
Windows版的PHP從版本5.2.1開(kāi)始有Thread Safe(線程安全)和None Thread Safe(NTS,非線程安全)之分,這兩者不同在于何處?到底應(yīng)該用哪種?這里做一個(gè)簡(jiǎn)單的介紹。
從2000年10月20日發(fā)布的第一個(gè)Windows版的PHP3.0.17開(kāi)始的都是線程安全的版本,這是由于與Linux/Unix系統(tǒng)是采用多進(jìn)程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式。如果在IIS下以CGI方式運(yùn)行PHP會(huì)非常慢,這是由于CGI模式是建立在多進(jìn)程的基礎(chǔ)之上的,而非多線程。一般我們會(huì)把PHP配置成以ISAPI的方式來(lái)運(yùn)行,ISAPI是多線程的方式,這樣就快多了。但存在一個(gè)問(wèn)題,很多常用的PHP擴(kuò)展是以Linux/Unix的多進(jìn)程思想來(lái)開(kāi)發(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)求就重開(kāi)一個(gè)進(jìn)程。同時(shí)FastCGI也可以允許幾個(gè)進(jìn)程同時(shí)執(zhí)行。這樣既解決了CGI進(jìn)程模式消耗太大的問(wèn)題,又利用上了CGI進(jìn)程模式不存在線程安全問(wèn)題的優(yōu)勢(shì)。
因此,如果是使用ISAPI的方式來(lái)運(yùn)行PHP就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運(yùn)行PHP的話就沒(méi)有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/21063.html
摘要:指,即線程安全,一般在以方式加載的時(shí)候選擇這個(gè)版本。具體從年月日發(fā)布的第一個(gè)版的開(kāi)始的都是線程安全的版本,這是由于與系統(tǒng)是采用多進(jìn)程的工作方式不同的是系統(tǒng)是采用多線程的工作方式。 TS指Thread Safety,即線程安全,一般在IIS以ISAPI方式加載的時(shí)候選擇這個(gè)版本。NTS即None-Thread Safe,一般以fast cgi方式運(yùn)行的時(shí)候選擇這個(gè)版本,具有更好的性能。 ...
摘要:共享數(shù)據(jù)使線程之間的通信比進(jìn)程之間的通信更有效。并發(fā)模型和的區(qū)別說(shuō)明的作用是啟動(dòng)一個(gè)新線程操作系統(tǒng)級(jí)別,有一個(gè)方法啟動(dòng)新線程,新線程會(huì)執(zhí)行相應(yīng)的方法。單獨(dú)調(diào)用會(huì)在當(dāng)前線程中執(zhí)行并不會(huì)啟動(dòng)新線程創(chuàng)建一個(gè)線程即可但是這個(gè)線程沒(méi)有執(zhí)行任何代碼段。 tutorials site 并發(fā)Concurrency發(fā)展的歷史 單CPU,一次只能運(yùn)行一個(gè)程序 -- 多任務(wù),一次同時(shí)運(yùn)行多個(gè)任...
摘要:中專(zhuān)門(mén)為解決線程安全的問(wèn)題抽象出了一個(gè)線程安全資源管理器,實(shí)現(xiàn)原理比較簡(jiǎn)單既然共用資源這么困難那么就干脆不共用,各線程不再共享同一份全局變量,而是各復(fù)制一份,使用數(shù)據(jù)時(shí)各線程各取自己的副本,互不干擾。 1.線程安全資源管理器 PHP的SAPI多數(shù)是單線程環(huán)境,比如cli、fpm、cgi,每個(gè)進(jìn)程只啟動(dòng)一個(gè)主線程,這種模式下是不存在線程安全問(wèn)題的,但是也有多線程的環(huán)境,比如Apache,...
摘要:如果現(xiàn)有子進(jìn)程中的線程總數(shù)不能滿足負(fù)載,控制進(jìn)程將派生新的子進(jìn)程。為解決線程的并發(fā)問(wèn)題,引入了線程安全資源管理器。的全拼,用來(lái)存放各個(gè)線程的鏈表。 PHP 進(jìn)階之路 - 零基礎(chǔ)構(gòu)建自己的服務(wù)治理框架(上) PHP 進(jìn)階之路 - 零基礎(chǔ)構(gòu)建自己的服務(wù)治理框架(下) PHP 進(jìn)階之路 - 億級(jí) pv 網(wǎng)站架構(gòu)的技術(shù)細(xì)節(jié)與套路 PHP 進(jìn)階之路 - 億級(jí) pv 網(wǎng)站架構(gòu)實(shí)戰(zhàn)之性能壓榨 注...
摘要:前往下載,選擇版本。在目錄下新建鏈接數(shù)據(jù)庫(kù)成功鏈接數(shù)據(jù)庫(kù)失敗運(yùn)行之后輸出下面結(jié)果,說(shuō)明可以解析文件且可以鏈接數(shù)據(jù)庫(kù)。 準(zhǔn)備所需安裝包 本次所選安裝版本是:nginx1.11.5,php7.1.0,mysql5.7.16,當(dāng)然可以根據(jù)喜歡的版本下載,為了方便管理,我在D盤(pán)下新建了wnmp文件夾,里面包含文件夾有mysql,php,nginx,www,www為存放項(xiàng)目文件夾。Nginx: ...
閱讀 2045·2023-04-26 01:59
閱讀 3331·2021-10-11 11:07
閱讀 3369·2021-09-22 15:43
閱讀 3454·2021-09-02 15:21
閱讀 2656·2021-09-01 10:49
閱讀 953·2019-08-29 15:15
閱讀 3163·2019-08-29 13:59
閱讀 2888·2019-08-26 13:36