本文目錄一覽:
- 1、php服務器用IIS好還是用Apache好,其他的服務器怎麼樣
- 2、iis 運行php效率怎麼樣
- 3、php+MsSQL+IIS服務器運行緩慢
- 4、怎樣提高IIS服務器性能,加快服務器速度
- 5、最高哪個php版本支持iis6
php服務器用IIS好還是用Apache好,其他的服務器怎麼樣
看你的項目,apache肯定好於iis的,但是apache和nginx之間也是有區別的。
輕量級,同樣起web 服務,比apache 佔用更少的內存及資源 ,抗並發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高並發下nginx 能保持低資源低消耗高性能 ,高度模塊化的設計,編寫模塊相對簡單,社區活躍,各種高性能模塊出品迅速啊
apache 相對於nginx 的優點:
rewrite ,比nginx 的rewrite 強大,模塊超多,基本想到的都可以找到,少bug ,nginx 的bug 相對較多,超穩定,存在就是理由,一般來說,需要性能的web 服務,用nginx 。如果不需要性能只求穩定,那就apache 吧。後者的各種功能模塊實現得比前者,例如ssl 的模塊就比前者好,可配置項多。這裡要注意一點,epoll(freebsd 上是 kqueue )網絡IO 模型是nginx 處理性能高的根本理由,但並不是所有的情況下都是epoll 大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個文件,apache 的select 模型或許比epoll 更高性能。當然,這只是根據網絡IO 模型的原理作的一個假設,真正的應用還是需要實測了再說的。
———————
iis 運行php效率怎麼樣
效率高不高取決於你寫的php程序。iis絕對很好的,微軟的技術肯定很高的。iis是win下的不二選擇。可以下載phpstudy 切換iis+php。能很好得支持iis7,iis8和iis6。
php+MsSQL+IIS服務器運行緩慢
1 嗯 用apache+linux+php來跑是業界流行的
2 優化服務端的程序提高效率是有限的 iis同樣的優化達到一個性能所花費的代價遠遠高於apache 難度也很高 不是說難度是因為iis所有功能都是封裝死的
3 建議不要用 iis iis是用來跑asp的不是跑php的 個人感覺微軟的iis總是死機 穩定性不可靠
4 小型機更要用pache+linux+php
怎樣提高IIS服務器性能,加快服務器速度
1、應該分配和釋放多個對象
你應該盡量避免過量分配內存,因為內存分配可能是代價高昂的。釋放內存塊可能更昂貴,因為大多數分配算符總是企圖連接臨近的已釋放的內存塊成為更大的塊。直到Windows NT? 4.0 service pack 4.0,在多線程處理中,系統堆通常都運行得很糟。堆被一個全局鎖保護,並且在多處理器系統上是不可擴展的。
2.不應該考慮使用處理器高速緩存
大多數人都知道由虛擬內存子系統導致的hard 頁錯誤代價很高,最好避免。但是許多人認為其他內存訪問方法沒有什麼區別。自從80486以後,這一觀點就不對了。現代的CPUs比RAM要快得多,RAM至少需要兩級內存緩存 ,高速L1 緩存能保存8KB數據和8KB指令,而較慢的L2 緩存能保存幾百KB的數據和代碼,這些數據和代碼混合在一起。L1 緩存中內存區域的一個引用需要一個時鐘周期,L2 緩存的引用需要4到7個時鐘周期,而主內存的引用需要許多個處理器時鐘周期。後一數字不久將會超過100個時鐘周期。在許多方面,緩存像一個小型的,高速的,虛擬內存系統。
至於和緩存有關的基本內存單元不是字節而是緩存列。Pentium 緩存列有32個字節寬。Alpha 緩存列有64個字節寬。這意味着在L1 緩存中只有512個slot給代碼和數據。如果多個數據一起使用(時間位置)而並不存儲在一起(空間位置),性能會很差。數組的空間位置很好,而相互連接的列表和其他基於指針的數據結構的位置往往很差。
把數據打包到同一個緩存列中通常會有利於提高性能,但是它也會破壞多處理器系統的性能。內存子系統很難協調處理器間的緩存。如果一個被所有處理器使用的只讀數據,和一個由一個處理器使用並頻繁更新的數據共享一個緩存 列,那麼緩存將會花費很長時間更新這個緩存列的拷貝。這個Ping-Pong高速遊戲通常被稱為”緩存 sloshing”。如果只讀數據在一個不同的緩存 列中,就可以避免sloshing。
對代碼進行空間優化比進行速度優化效率更高。代碼越少,代碼所佔的頁也越少,這樣需要的運行設置和產生的頁錯誤也會更少,同時佔據的緩存 列也會更少。然而,某些核心函數應該進行速度優化。可以利用profiler去識別這些函數。
3.決不要緩存頻繁使用的數據。
軟件緩存可以被各種應用程序使用。當一個計算代價很高時,你會保存結果的一個拷貝。這是一個典型的時空折中方法:犧牲一些存儲空間以節省時間。如果做得好,這種方法可能非常有效。
你必須正確地進行緩存。如果緩存了錯誤數據,就會浪費存儲空間。如果緩存得太多,其他操作可以使用的內存將會很少。如果緩存得太少,效率又會很低,因為你必須重新計算被緩存 遺漏的數據。如果將時間敏感數據緩存得時間過長,這些數據將會過時。一般,服務器更關心的是速度而不是空間,所以他們要比桌面系統進行更多的緩存。一定要定期去除不用的緩存,否則將會有運行設置問題。
4.應該創建多個線程,越多越好。
調整服務器中起作用的線程數目是很重要的。如果線程是I/O-bound的,將會花費很多時間用來等待I/O的完成-一個被阻塞的線程就是一個不做任何有用工作的線程。加入額外的線程可以增加通量,但是加入過多的線程將會降低服務器的性能,因為上下文交換將會成為一個重大的overhead。上下文交換速度應該低的原因有三個:上下文交換是單純的overhead,對應用程序的工作沒有任何益處;上下文交換用盡了寶貴的時鐘周期;最糟的是,上下文交換將處理器的緩存填滿了沒用的數據,替換這些數據是代價高昂的。
有很多事情是依靠你的線程化結構的。每個客戶端一個線程是絕對不合適的。因為對於大量用戶端,它的擴展性不好。上下文交換變得難以忍受,Windows NT用盡了資源。線程池模型會工作得更好,在這種方法中一個工人線程池將處理一條請求列,因為Windows 2000提供了相應的APIs,如QueueUserWorkItem。
5.應該對數據結構使用全局鎖
使數據線程安全的最簡單方法是把它套上一把大鎖。為簡單起見,所有的東西都用同一把鎖。這種方法會有一個問題:序列化。為了得到鎖,每一個要處理數據的線程都必須排隊等候。如果線程被一把鎖阻塞,它沒有在做任何有用的事。當服務器的負載較輕時,這個問題並不常見,因為一次可能只有一個線程需要鎖。在負載很重的情況下,對鎖的激烈爭奪可能就會成為一個大問題。
設想在多車道高速公路上發生了一個意外事故,這條高速公路上的所有車輛都被轉向一條狹窄的道路。如果車輛很少,這一轉換對交通流的速率的影響可以忽略。如果車輛很多,當車輛慢慢併入那條單通道時,交通阻塞會延伸幾英里。
有幾種技術能夠減少鎖競爭。
· 不要過分保護,也就是說,不是非常必要不要鎖住數據。只有需要時才去持有鎖,而且時間不要過長。不要在大段代碼周圍或頻繁執行的代碼中沒必要地使用鎖,這一點很重要。
· 對數據進行分割,使它能夠用一套獨立的鎖保護。例如,一個符號表可以按標識符的第一個字母分割,這樣在修改名字以Q開頭的符號的值時,就不會去讀名字以H開頭的符號的值。
· 使用APIs的Interlocked 系列(InterlockedIncrement,InterlockedCompareExchangePointer等)自動修改數據而不需要鎖。
· 當數據不是經常被修改時可以使用多讀者/單作者(multi-reader/single-writer)鎖。你將獲得更好的並發性,儘管鎖操作的代價將更高並且你可能會冒餓死作者的危險。
· 在關鍵部分使用循環計數器。參見Windows NT 4.0 service pack 3中的SetCriticalSectionSpinCount API。
· 如果你不能得到鎖,使用TryEnterCriticalSection並做一些其他的有用的工作。
高競爭導致serialization,serialization導致降低CPU的利用率,這促使用戶加入更多的線程,結果事情變得更糟。
6.不必注意多處理器機器
你的代碼在多處理器系統上比在單處理器系統上運行得還要糟,這可能是件令人噁心的事。一個很自然的想法是,在一個N維繫統上運行N次會更好。性能很差的原因是競爭:鎖競爭,總線競爭,和/或緩存列競爭。處理器都在是爭奪共享資源的所有權,而不是做更多的工作。
如果你一定要編寫多線程應用程序的話,你應該在多處理器盒上對你的應用程序進行強度測試和性能測試。單處理器系統通過時間分片地執行線程而提供一個並發性的假象。多處理器盒具有真正的並發性,競爭環境和競爭更容易發生。
7.應該始終使用模塊化調用;他們很有趣。
利用同步模塊化調用來執行I/O操作對大多數桌面應用程序來說是合適的。但是,他們不是使用服務器上的CPU(s)的好方法。I/O操作要花費上百萬個時鐘周期來完成,這些時鐘周期本來可以被更好地利用。利用異步I/O你能得到顯著提高的用戶請求率和I/O通量,不過增加了額外的複雜性。
如果你有需要花費很長時間的模塊化調用或I/O操作,你應該考調撥多少資源給他們。你想使用所有的線程還是有個限制?一般地,使用有限的幾個線程要好些。構建一個小的線程池和隊列,利用隊列來安排線程的工作完成模塊化調用。這樣,其他線程就可以拾取和處理你的非模塊化的請求。
8.不要進行測量
當你能夠測量你所談論的事情並用數字表達它時,這就表示你對他有了一定的了解;但是如果你不能用數字表達時,你的知識是貧瘠的不能令人滿意的;這可能是知識的開始,但這時你簡直不可能將你的思想提高到科學的水平。
– Lord Kelvin (William Thomson)
如果不測量你就不能了解應用程序的特性。你在黑暗中摸索,一半是靠猜測。如果不識別性能問題,你就不能做任何改進或做出工作量計劃。
測量包括黑匣子測量和profiling。黑匣子測量的意思是收集由性能計數器(內存使用,上下文交換,CPU利用等)和外部檢測工具(通量,反映時間等)所顯示的數據。為了profile你的代碼,你編譯代碼的一個工具版,然後在各種條件下運行它,並收集關於執行時間和過程調用頻率的統計數據。
測量如果不用於分析的話就一點用都沒有。測量將不僅告訴你有問題,而且甚至能幫助你找到問題發生在哪,但它不能告訴你為什麼會有問題。對問題進行分析以便你能正確地改正他們。要從根本上解決問題而不是停留在表面現象。
當你進行改動後,要重新測量。你要知道你的改動是否有效。改動也可能會暴露其他性能問題,測量-分析-改正-再測量的循環就會重新開始。你也必須要有規律地進行測量,以便發現性能衰退問題。
9.應該使用單一用戶,單一請求的測試方法。
書寫ASP和ISAPI應用程序的一個通病是只用一個瀏覽器去測試應用程序。當他們在Internet上應用他們的程序時,他們才發現他們的應用程序不能處理高負載,並且通量和反應時間另人可憐。
用一個瀏覽器測試是必要的但是不夠的。如果瀏覽器反應得不夠快,你就知道你有麻煩了。但即使它在使用一個瀏覽器時很快,你也不知道它處理負載的能力如何。如果十幾個用戶同時請求會發生什麼事?一百個呢?你的應用程序能容忍什麼樣的通量?它能提供什麼樣的反應時間?在輕載時這些數字會怎樣?中等負載呢?重載呢?在多處理器機器上你的應用程序會如何?對你的應用程序進行強度測試,這對於找出bugs發現性能問題來說是基本的。
類似的負載測試考慮適用於所有的服務器應用程序。
10.不應使用實際環境。
人們往往只在幾個特定的,人工的環境(如下benchmarks)下調整應用程序。選擇和實際情況相對應的各種情況,並為針對各種操作進行優化,這一點很重要。如果你不這樣做,你的用戶和評論家一定會這樣做,並且他們將依此來評判你的應用程序的好壞。
最高哪個php版本支持iis6
PHP5.3x+IIS6完全配置方法,PHP5.3以上版本全新配置IIS方法 FastCGI方式(一…
在IIS6.0下安裝Fastcgi+PHP來運行PHP程序(未裝alpha),終於實現手工配置 IIS 6 下以 FastCGI 跑 PHP
PS:微軟提升PHP在IIS下的性能 FastCGI Extension for IIS6.0% ~ d# L0 v T1 o D( U; ^; j
微軟已經和PHP社區共同努力了一年之久,他們終於研發出 能讓IIS更快地解析PHP的方法,用戶們甚至不需要做基準測試就可以明顯感覺到PHP解析速度加快.早在2006年,微軟就和Zend等廠商一起研發 Windows Server下的優化工作,IIS產品組已經公布了IIS6和7的FastCGI擴展,它能讓PHP執行效率更高. PHP一直以來是IIS的尷尬,用PHP擴展的速度跟不上其它服務端(甚至還有一些致命問題例如在某內存地址報錯),而PHP又比ASP.net普及得 多,因此微軟需要在IIS+PHP上突破市場. 微軟去年底發布了ii6的fastcgi模塊,可以免費下載,使用IIS6的您不妨在您的測試環境上試一下,沒準會有驚喜哦! 今天將服務器上的php支持改成了fastcgi,目前運行穩定.fastcgi的iis模塊可以讓流行的應用框架在iis上支持fastcgi協議以提 供高性能和可用性的訪問服務,fastcgi面向現有的網絡服務器提供高性能的cgi替代標準。具體php安裝方法我記錄下來,其中包括出現的錯誤.
1.下載 FastCGI For IIS6 5 A( c* Z’ E” t1 {. t, X
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)- B: u, q, t’ H” K: S4 t# J
下載:http//,選擇: x86. ?8 ~ A7 t7 i
# ? i2 s’ U f% K
或者直接下載:http//go.microsoft.com/?linkid=96556962 v$ { j7 X8 O ~
下載之後,雙擊運行進行安裝。
(FakeCGI調試工具(備用):下載fake.zip http//blogs.iis.net/rickjames/attachment/1563148.ashx )
‘ @” ^! W# d’ F. @# c5 [
安裝後在 C:WINDOWSsystem32inetsrv 目錄下產生了五個文件。如下圖: B; a5 ]* v8 i% Z% b8 j2 q
同時在 IIS 的 “Web 服務擴展”里多了 FastCGI Handler。2 p3 o- h+ q, M/ d7 q
9 A- R; U( Q5 j8 `% W0 K* x- J. {
下載安裝VC9運行庫 即VISUAL C++ 2008
Microsoft Visual C++ 2008 Redistributable Package (x86)下載地址:
點擊這裡下載
2.下載 PHP5.3.0 Windows 版
由於PHP5.3的全新特效及改進,原有的isapi方式解析PHP腳本已經不被支持,PHP從5.3.0以後的版本開始使用微軟的fastcgi模式,這是一個更先進的方式,運行速度更快,更穩定!
新版本的PHP5.3通過以往老方法已經不能在IIS上安裝了,下載IIS下的PHP,下載地址http//windows.php.net/download/,(注意IIS下要選擇VC9的版本)解壓到所需目錄,該目錄需要給予
一、如何選擇PHP5.3的VC9版本和VC6版本
VC6版本是使用Visual Studio 6編譯器編譯的,如果你的PHP是用Apache來架設的,那你就選擇VC6版本。
VC9版本是使用Visual Studio 2008編譯器編譯的,如果你的PHP是用IIS來架設的,那你就選擇VC9版本。
二、如何選擇PHP5.3的Thread Safe和Non Thread Safe版本
先從字面意思上理解,Thread Safe是線程安全,執行時會進行線程(Thread)安全檢查,以防止有新要求就啟動新線程的CGI執行方式而耗盡系統資源。Non Thread Safe是非線程安全,在執行時不進行線程(Thread)安全檢查。
再來看PHP的兩種執行方式:ISAPI和FastCGI。
ISAPI執行方式是以DLL動態庫的形式使用,可以在被用戶請求後執行,在處理完一個用戶請求後不會馬上消失,所以需要進行線程安全檢查,這樣來提高程序的執行效率,所以如果是以ISAPI來執行PHP,建議選擇Thread Safe版本;
而FastCGI執行方式是以單一線程來執行操作,所以不需要進行線程的安全檢查,除去線程安全檢查的防護反而可以提高執行效率,所以,如果是以FastCGI來執行PHP,建議選擇Non Thread Safe版本。
user讀取運行權限,
選擇:PHP 5.3 (5.3.0)’ Z* Z0 r% I) ~! F* r4 f+ V. R’ b
VC9 x86 Thread Safe (2009-Jun-30 08:52:56) Zip [13.54MB]
sha1: f049c806744855e4420844d47e051949fcf06661
下載 .zip 格式的版本,解壓縮下載的 php-5.3.0-Win32-VC9-x86.zip 文件,並將其複製到:X:Server_Corephp目錄(你可以根據自己的意願解壓到別的目錄。),並給 IIS 啟動帳戶組或用戶賦予讀取和運行權限。如下圖:
+ A( b2 ^’ Y6 K7 N9 ^8 _
: I” N9 {8 q: R* E’ h9 j2 D
3. 註冊 PHP 到 FastCGI % U3 L0 {. m1 @+ @# [
打開 C:WINDOWSsystem32inetsrvfcgiext.ini 文件。
; This is the configuration file for the FastCGI handler for IIS 6.0.: O: q. R4 u+ n9 f
; The FastCGI handler will look for this file in the same directory as
; fcgiext.dll. By default, the FastCGI installer will place this file into
; the %windir%system32inetsrv directory.
– E( a5 J3 l’ R% H8 n
我個人的理解是,只要“Web 服務擴展”里的 FastCGI Handler 為允許時,在加載 fcgiext.dll 時,會讀取 fcgiext.ini 配置文件的內容,根據裡面的配置為每個網站提供映射。
在 [Types] 下添加以下配置: ; `9 c; v2 t9 b6 W- `; y’ r9 H6 H7 S
[Types]/ K. X# n9 p4 I9 e
8 b, @+ K$ f6 }; c4 w
php=PHP
[PHP]
ExePath=X:Server_CorePHPphp-cgi.exe
這裡要用:“”不能用“/”,“php”表示擴展名,“PHP”是配置節名稱,以“[PHP]”定義。 (選你自己的安裝的目錄,下同。)
) U. P; P N: w0 |7 D’ u” f h- e( c8 R
4. 配置 php.ini
將 X:Server_CorePHPphp.ini-production 複製一個,然後重命名為 X:Server_CorePHPphp.ini ! q4 H: N9 X) K. X9 e }( S
找到PHP安裝目錄下的php.ini-production並改名為php.ini文件,找到下面% n4 k. G8 ?4 N# K! P. B
[Date]7 R _* z$ ?% u’ ? t’ v
; Defines the default timezone used by the date functions
; http//php.net/date.timezone
; date.timezone =, E+ d8 |! L0 J; N
更改為並去除前面的“;”:
[Date]( c% H4 u” v2 ~4 h( R4 @4 K
; Defines the default timezone used by the date functions
; http//php.net/date.timezone
date.timezone = Asia/Shanghai Q, @2 J ^9 t s) Q0 J
如果不改以上的date.timezone可能打開網頁會提示500錯誤
找到6 s- j% ?# x$ F, h
; On windows:
; extension_dir = “ext”
改為. R- g. Z+ ~8 ” D: O9 g
; On windows:
extension_dir = “X:Server_CorePHPext”
9 V2 g8 k’ a- V9 ” T” u/ z
找到:fastcgi.impersonate = 1;這句,把前面的;去掉, fastcgi.impersonate = 1
如下圖:
5 P5 K9 c- [ n0 J( D( n
找到:short_open_tag= Off;改為
short_open_tag= On3 n2 X2 Y3 c( v) a# y6 X0 g+ {# ]
8 F0 L5 ]7 h8 w6 z. w
至於php.ini裡面的extension開啟方式,根據自己所需,找到:Windows Extensions 在 Windows Extensions 下方的動態模塊配置中,需要打開以下模塊支持:(去掉模塊配置每行前面的;號即可)比如我的是: 7 v; k* P1 c
;extension=php_bz2.dll: n+ O” R$ Z) _7 [* B( c( D. K
;extension=php_curl.dll
;extension=php_dba.dll’ f6 Y* p3 T4 R% q- c4 ] Z7 G
extension=php_mbstring.dll” C* _: V3 z- F% m
extension=php_exif.dll7 l4 N2 N” e {
;extension=php_fileinfo.dll7 E( X0 ~7 r; C* F9 j
extension=php_gd2.dll5 x9 ^1 g8 Q5 S” B F
;extension=php_gettext.dll$ O’ S. v1 i2 O$ q. H: O; G
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll. a! M+ _) z: _ P* @
extension=php_ldap.dll
;extension=php_ming.dll
;extension=php_mssql.dll3 g0 O) n8 c6 }9 M9 T7 X
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll. K0 q3 p6 t, ^# K) i* K
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll. { w3 O# E$ , U7 j% y$ r1 I
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll$ T- g9 D 7 D3 Z+ n# S% U M
;extension=php_phar.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll. K9 m+ o) O9 @7 W @0 N
;extension=php_soap.dll p S8 Q’ s+ I, F0 L5 a1 v
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sqlite3.dll0 H5 ^$ l0 V7 g, M
;extension=php_sybase_ct.dll
;extension=php_tidy.dll2 m’ J5 Q; A- T9 n
;extension=php_xmlrpc.dll
;extension=php_xsl.dll% h* t/ J” J) a8 t7 Q( I’ n5 R9 F$ q
;extension=php_zip.dll
注意最後一個php_zip.dll這個在我下載下來的php5.3.0的ext內是不存在的,所以如果開啟會報錯誤,如果實在需要這個DLL,可以從PHP5.2中拷貝過去(我的不行)
保存 php.ini 文件,並將其複製到 C:Windows ,並刪除 X:Server_CorePHPphp.ini,不刪除有時IIS報500錯!
4 B0 M. ]9 U E3 d1 V
5. 配置網站 q% W* / n) c’ `- Y
; t4 X! x( V, T! [) [2 |4 [
打開IIS管理器,網站上點右鍵-屬性-主目錄-配置-添加,配置如下圖” j9 W, {” c4 S% @2 I1 x
Q6 _: a8 g, m q/ R, R
# ^% v* ?# G6 |
可執行文件路徑:C:WINDOWSsystem32inetsrvfcgiext.dll
6.相關權限配置
C:WINDOWSsystem32inetsrvfcgiext.dll 的權限,NETWORK_SERVICE和IUSR_***(Internet來賓賬戶)的可讀和運行權限。
PHP安裝目錄的權限,NETWORK_SERVICE的讀和運行權限
網站所在目錄的權限,IUSR_***(Internet來賓賬戶)的讀取和運行權,需要寫入的目錄單獨再給寫入權
7. 寫個 php 測試下吧
” m: |: h# L’ b% y; }
修改完在IIS上或者命令提示符運行iisreset命令重啟IIS服務,這步很重要!
( M6 w6 {! R y ~4 F
測試是否安裝成功!
建立一個網站,phpinfo.php文件內容為:/ o+ p’ n$ t8 T+ O( b2 s P. P
文件:phpinfo.php
?php
phpinfo();
?
6 j- O: M6 | [, p/ p t
看到類似以下效果說明你的服務器可以跑 php 了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/284737.html