php mysql 線程安全_PHP 線程安全與非線程安全版本的區別深入解析

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

一般我們會把PHP配置成以ISAPI的方式來運行,ISAPI是多線程的方式,這樣就快多了。但存在一個問題,很多常用的PHP擴展是以Linux/Unix的多進程思想來開發的,這些擴展在ISAPI的方式運行時就會出錯搞垮IIS。因此在IIS下CGI模式才是PHP運行的最安全方式,但CGI模式對于每個HTTP請求都需要重新加載和卸載整個PHP環境,其消耗是巨大的。

為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進程重復利用而不是每一個新的請求就重開一個進程。同時FastCGI也可以允許幾個進程同時執行。這樣既解決了CGI進程模式消耗太大的問題,又利用上了CGI進程模式不存在線程安全問題的優勢。

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

PHP官方http://php.net/上關于widows的版本有4個:VC9 x86 Non Thread Safe,VC9 x86 Thread Safe,VC6 x86 Non Thread Safe,VC6 x86 Thread Safe;那么有什么區別呢?

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

VC6 是什么?VC6 就是 legacy Visual Studio 6 compiler ,就是使用這個編譯器編譯的。

VC9 是什么?VC9 就是 the Visual Studio 2008 compiler ,就是用微軟的 VS 編輯器編譯的。

那我們如何選擇下載哪個版本的 PHP 呢?如果你是在 windows 下使用 Apache+PHP 的,請選擇 VC6 版本;

如果你是在 windows 下使用 IIS+PHP 的,請選擇 VC9 版本;

2.運行方式的不同PHP有2中運行方式:ISAPI和FastCGI。

ISAPI執行方式是以DLL動態庫的形式使用,可以在被用戶請求后執行,在處理完一個用戶請求后不會馬上消失,所以需要進行線程安全檢查,這樣來提高程序的執行效率,所以如果是以ISAPI來執行PHP,建議選擇Thread Safe版本;

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

對于apache服務器來說一般選擇isapi方式,而對于nginx服務器則選擇FastCGI方式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373521.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

奶牛健美操(codevs 3279)

題目描述 Description Farmer John為了保持奶牛們的健康,讓可憐的奶牛們不停在牧場之間 的小路上奔跑。這些奶牛的路徑集合可以被表示成一個點集和一些連接 兩個頂點的雙向路,使得每對點之間恰好有一條簡單路徑。簡單的說來, 這些點的布局就是…

Nginx 實現網站 http、https 配置

在 nginx conf 目錄下新建 ssl 目錄,將申請的 ssl證書文件拷貝到此處: 修改 nginx 配置文件使支持 https,修改如下: server {listen 80;listen 443 ssl;ssl_certificate ssl/cert-xuexiyuan.cn.crt;ssl_certificat…

實用垃圾收集,第1部分–簡介

這是我打算寫的一系列博客文章的第一部分,其目的是解釋垃圾回收在現實世界中的工作方式(特別是在JVM中 )。 我將介紹一些我認為對于充分理解垃圾收集對于實際目的是必要的理論,但是將其降至最低。 其動機是在各種情況下&#xff0…

數據結構之楊氏矩陣

轉自: http://blog.csdn.net/jiyanfeng1/article/details/8189228轉載于:https://www.cnblogs.com/neversayno/p/5256262.html

mysql 導出 沒有函數_沒有MYSQL FILE函數的CSV導出

構建最佳CSV。你可以按照以下方式做。$filename data.csv;$csv_terminated "\n";$csv_separator ",";$csv_enclosed ";$csv_escaped "\\";$results array(1,2,3);// value$schema_insert ;$header array(a,b,c);// headerfor ($i 0…

使用jdk壓縮war包

首先安裝jdk 壓縮 ..../jdk/bin/jar -cvf file.war file 解壓 ..../jdk/bin/jar -xvf file.war 轉載于:https://www.cnblogs.com/chongchong88/p/6049690.html

MongoDB查詢性能分析—— explain 操作返回結果詳解

MongoDB 提供 db.collection.explain(), cursort.explain() 及 explain 命令獲取查詢計劃及查詢計劃執行統計信息。 explain 結果將查詢計劃以階段樹的形式呈現。 每個階段將其結果(文檔或索引鍵)傳遞給父節點。 葉節點訪問集合或索引。 中間節點操縱由…

.deb包的安裝方法

deb是Debian linux的安裝格式,跟redhat的rpm非常相似,最基本的安裝命令是: dpkg -i file.deb dpkg是Debian Package的簡寫,是為Debian專門開發的管理系統套件,方便軟件的安裝,更新和移除。所有源自Debian的…

html回復評論_3天內看了3000多篇《哈佛商業評論》,挑出來最有用的分享下

上次分享過一個工具:一鍵批量下載公眾號歷史消息(后臺回復001獲取)。我把《哈佛商業評論》的歷史文章,全部爬了下來。該雜志被全球商業譽為“管理圣經”。我最感興趣的一部分是:個人管理。先搜索關鍵詞:&qu…

Java中的高性能庫

越來越多的庫被描述為高性能,并且有支持該要求的基準。 這是我所知道的選擇。 Disruptor庫 – http://code.google.com/p/disruptor/ LMAX旨在成為世界上最快的交易平臺。 顯然,為了實現這一目標,我們需要做一些特殊的事情,以通過…

Linux 命令行上執行多個命令(分隔符簡介使用)

Linux 系統可以在一個命令行上執行多個命令,相應的命令行的分隔符簡介及使用如下: ; 如果命令被分號(;)所分隔,那么命令會連續的執行下去,就算是錯誤的命令也會繼續執行后面的命令。示例如下: ls /home/; ls /etc/i…

codeforces 732/D 二分

給出考試時間和考試需要準備的時間&#xff0c;問最早考完所有科目的時間 二分答案 NlogN 二分抄神犇的寫法 感覺挺舒服的嘻嘻嘻 1 #include<bits/stdc.h>2 using namespace std;3 const int MAXN1e55;4 int N,M,d[MAXN],w[MAXN],cnt[MAXN];5 void read(int &x){6 …

XML基礎(二)

XML命名規則&#xff1a; ①名稱可以含字母、數字以及其他的字符 ②名稱不能以數字或標點符號開始 ③名稱不能以“xml”開始 ④名稱不能包含空格 ⑤盡量避免"-", "." ,":"等字符 xml元素是可擴展的。 XML屬性&#xff1a; 屬性提供有關元素的額外…

NoSQLBooster for MongoDB 中跨庫關聯查詢

? 使用 MongoDB 是我們常常會遇到一些特殊的需求需要跨庫關聯查詢&#xff0c;比如訂單明細缺商品重量需要補商品重量&#xff0c;而商品重量數據又在商品庫中&#xff0c;這事就需要跨庫關聯操作&#xff0c;示例代碼如下&#xff1a; // 使用 order 庫&#xff0c;注意語句…

網頁版的svn怎樣同步代碼_學會使用Hdlbits網頁版Verilog代碼仿真驗證平臺

大家推薦一款網頁版的 Verilog代碼編輯仿真驗證平臺&#xff0c;這個平臺是國外的一家開源FPGA學習網站&#xff0c;通過“https://hdlbits.01xz.net/wiki/Main_Page”地址鏈接進入網頁&#xff0c;在該網頁上可以進行Verilog代碼的編寫、綜合&#xff0c;而且最后還能夠仿真出…

遇到的零碎問題

Show()時&#xff0c;其他窗口仍可響應&#xff0c;ShowDialog()時其他窗口無響應。 在public Form1()中使用messagebox會先出現信息窗口&#xff0c;再顯示主窗體&#xff0c;故考慮加入了start按鈕。 play()會被打斷&#xff0c;PlaySync&#xff08;&#xff09;會播放完再執…

Tomcat上具有JAX-WS的Web服務

讓我們假設一家企業正在一個集中式系統中維護用戶身份驗證詳細信息。 我們需要創建一個AuthenticationService&#xff0c;它將獲取憑據&#xff0c;對其進行驗證并返回狀態。 其余的應用程序將使用AuthenticationService對用戶進行身份驗證。 創建AuthenticationService接口&a…

Python的下載及安裝

1、官網下載地址&#xff1a;https://www.python.org/downloads/ 2、python設置環境變量&#xff1a; 在系統變量里添加Python的安裝位置 3、在cmd里輸入python里即可轉載于:https://www.cnblogs.com/fun0623/p/5257573.html

MongoDB 字段拼接 $concat(aggregation)

$concat 拼接字符串操作&#xff0c;返回拼接后的字符串。語法格式如下&#xff1a; { $concat: [ <expression1>, <expression2>, ... ] }參數可以是任何有效的表達式&#xff0c;只要它們解析為字符串即可。 有關表達式的更多信息&#xff0c;請參閱表達式。 示…

cmake mysql 編譯參數_Cmake-MySQL編譯參數說明

Cmake-MySQL編譯參數說明(來源于MySQL官方手冊)https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.htmlFormats Description DefaultIntroduced Removed ##格式描述默認導入刪除BUILD_CONFIG Use same build options as official releases ##b使用相同…