apache 關於VC6,VC9,OPEN SSL,NO SSL大體說一下

 

PHP自從某個版本之後開始細分 VC6 VC9 線程安全 非線程安全

VC6 和 VC9有點搞懂了
PHP官方網站左側有關於VC6和VC9的說明
VC6適用於Apache,VC9適用於IIS

http://windows.php.net/download/#php-5.4從這個地址可以看出,5.2之前是VC6的,之後的都是VC9的

線程安全 和 非線程安全 這就搞不懂了 PHP學了學斷了斷 重裝系統後N多天沒有搞PHP 發現PHP已經是5.3.1版了 Apache已是2.2.14 據說這兩個版本的發佈意義重大 修復了幾個漏洞 不錯不錯 稀裏糊塗的下了來裝,搞了個非線程安全版的PHP和NO MOD_SLL的Apache還一個種叫OPEN SSL的版本

php-5.3.1-nts-Win32-VC6-x86.zip + apache_2.2.14-win32-x86-no_ssl.msi 搞上去就出問題 PHP5.3.1裏沒有php5apache2_2.dll 找翻了GOOGLE 也沒有找出來個眉目 最後下了線程安全的PHP 解決了

PHP VC6 VC9 線程安全 非線程安全 已經找到
Apache no mod_ssl 和Openssl 暫時沒找到

引一篇天涯的問答:php非線程安全和線程安全版本有什麼區別 
http://wenda.tianya.cn/wenda/thread?tid=06b730228560a92b

看到zend debuger有非線程安全的版本,才知道PHP推出了非線程安全的版本。而此前我對非線程安全一無所知:
另一篇文章好像說這個跟FASTCGI有點關係。
這是一段文字,不過我沒看明白:
php本身是線程安全的。一個服務進程可以安全地提供多請求線程的支持
一些擴展並不遵守
例如:線程安全的擴展中,全局變量的定義不是像普通C程序那樣直接定義在函數之外,而是定義在宏ZEND_BEGIN_MODULE_GLOBALS和 ZEND_END_MODULE_GLOBALS之間。需要ZTS(Zend Thread Safe)支持的擴展需要包含TSRM.h頭文件,並定義TSRMG宏值
在不支持線程安全的擴展中,僅是簡單地認爲一個服務進程同時只有一個請求在激活狀態,不會出現衝突,那麼全局變量可以簡單地在RINIT函數中初始化(RINIT表示請求開始)並在RSHUTDOWN中註銷:
CODE:[Copy to clipboard]PHP_RINIT_FUNCTION(ext)
{
counter = 0;
}
PHP_FUNCTION(ext)
{
RETURN_LONG(counter++);
}
...這就是一個很簡單的計數器。只要請求沒有結束,每次調用ext,都會觸發counter自增。
當在多線程環境中時,這個程序會發生嚴重的混亂,counter會變得飄忽不定,因爲沒有辦法預測線程的觸發和結束順序及時間。這說明這個擴展並非線程級安全。 
多線程,Apache 1.3 和 Apache 2.0
如果您已經使用了 Apache 和 PHP 一段時間了,那麼您很可能見到過安裝文檔中的一個警告信息,它說“不要在生產環境中使用 Apache 2.0.x 和 PHP,在 Unix 和 Windows 上都不行”。在 Windows 系統上的 PHP 5.0.2 包中,這個警告信息可以在 install.txt 文件中的第 745 行找到。我們需要理解此處的這個問題是什麼,這樣就可以決定是否要使用 Apache 2.0 或 IBM HTTP Server 2.0。
Apache 2.0 可以配置爲以兩種方法運行:採用線程的和不採用線程的。當作爲一個採用線程的服務器運行時,服務器中可以同時有多個線程都處於活動狀態在執行,一次可以爲 多個用戶生成響應信息。通常,這樣可以提高服務器的響應能力,使其更好地利用具有多個處理器的大型硬件。但是它同時也引入了一種風險。服務器調用的各個軟 件層次必須在同時爲多個用戶調用時都能保證是安全的。儘管 Web 服務器本身、PHP 解釋器以及 PHP 擴展以這樣調用都是安全的,但是有些 PHP 擴展會使用其他語言(例如 C 語言)編寫的庫,這些庫並不全都是線程安全的。
在 Apache Web 頁面上您可以找到一個有關這個問題的討論,其中給出了一些建議,以及一種用來發現您的 PHP 擴展可能正在使用哪些 C 庫以及哪些是線程安全的方法,請參閱參考資料部分。
在 實踐中,很多人都會選擇迴避這個問題,而是採用下面的兩種方法:要麼以單線程模式使用 Apache 2.0,要麼使用 Apache 1.3,它總是以單線程模式運行。雖然 Apache 1.3 和 2.0 也有其他一些區別,例如 Apache 2.0 可以支持 IPv6,但是到目前爲止,二者之間最大的區別就是線程的問題,因此保留使用 Apache 1.3 服務器並不像聽起來一樣是一種退化。
這 個問題在 IBM HTTP Server 中是怎樣的呢?IBM 採用線程模式從 Apache 2.0 中編譯出了 IBM HTTP Server:這樣速度更快,但卻可能在使用非線程安全的擴展時是不安全的。由於 IBM 並沒有同時發行源代碼,而且選擇採用線程和不採用線程的模式都是在編譯時進行選擇的,因此作爲一個終端用戶來說,您無法選擇採用不使用線程的模式重新編譯 IBM HTTP Server 2.0。不過在編寫本文時,IBM 正在同時發行基於 2.0 和 1.3 版本的 IBM HTTP Server,這樣您就可以選擇使用單線程的基於 1.3 版本的服務器了。

PHP的VC6 X86和VC9 X86有什麼不同?

  本文由ArthurXF原創,ArthurXF原創具有最強營銷功能的BIWEB WMS網站管理系統,將讓您的業務如虎添翼。
PHP現在推出5.3.0版本了,不過下載的時候有幾個不同版本選擇。那就是VC6 X86和VC9 X86。
首先我來解答:
VC6是什麼?
VC6就是legacy Visual Studio 6 compiler,就是使用這個編譯器編譯的。
VC9是什麼?
VC9就是the Visual Studio 2008 compiler,就是用微軟的VS編輯器編譯的。

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

那Non Thread Safe是什麼?
Non Thread Safe就是非線程安全;
Thread Safe 是什麼?
Non Thread Safe 是線程安全;
官方並不建議你將Non Thread Safe (非線程安全)應用於生產環境,所以我們選擇Thread Safe(線程安全) 版本的PHP來使用

 

找到了關於NO SSL 和OPEN SSL的區別以下爲轉載
百度知道網友:
1.openssl,應該是你的網站支持https那種需要數字證書的加密網頁,佔用的端口是443而不是普通阿帕奇的80.具體怎麼做證書,和實現這種功能比較複雜。
2.如果是搭建環境應該都可以,但是我一般都用no_ssl的,如果沒必要用的話。

with OpenSSL是表示帶有OpenSSL模塊,利用OpenSSL就可以給Apache配置SSL安全鏈接的,也就是使用https://方式進行訪問;no ssl則表示不帶OpenSSL模塊,無法用於SSL安全鏈接。更多SSL證書的信息,可以訪問下面的網站。 
參考資料:http://www.globalssl.cn/

 

 

openssl:ssl安全認證模式,協議是HTTPS而不是HTTP.

一般情況下,使用no_ssl版本就可以.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章