国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 後端開(kāi)發(fā) php教程 提升PHP執(zhí)行速度全攻略_PHP教程

提升PHP執(zhí)行速度全攻略_PHP教程

Jul 21, 2016 pm 04:08 PM
and error logging php 全攻略 執(zhí)行 提升 設(shè)定 速度 問(wèn)題


Php設(shè)定問(wèn)題&加速建議 在使用的應(yīng)用程式過(guò)程中如果因?yàn)閜hp設(shè)定錯(cuò)誤不能使用,請(qǐng)檢查php.ini中如下參數(shù)設(shè)定.
下面均假設(shè)你的PHP安裝在 d:/php/

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;

; error_reporting is a bit -field. Or each number up to get desired error
; reporting level
; E_ALL - All errors and warnings
; E_ERROR - fatal run-time errors
; E_WARNING run - fatal run-time errors
; E_WARNING run-run_WARN -fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's poss. ??>; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
r_COMPI E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message; except for notices

;error_reporting = E_ALL & ~E_NOTICE

; - Show only errors

;error_reporting = E_COMPILE_ERROR|E_ROR| all errors except for notices

error_reporting = E_ALL & ~E_NOTICE
; Print out errors (as a part of the output). For production web sites,
; feature off, and use error logging
; instead (see below). Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as files, filesed your database schema or other information.
display_errors = On

; You should do your best to write your scripts so that they do not require
; regonlyf be can fobals to formbe can obals; easily lead
; to possible security problems, if the code is not very well thought of.
register_globals = On

; Argument passed to save_handler. ??>; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
session.save_path = "c:/winnt/temp"(可以改成你的已存在的目錄)

; cgi.force_redirect is necessary to provide security running PHP as a CGI under
; most web servers. Left undefined, PHP turnsthis on by ault.this on by ault. ; turn it off here AT YOUR OWN RISK
; **You CAN safely turn this off for IIS, in fact, you MUST.**
cgi.force_redirect = 0

; Directory in which>; Directory in which the loadable extensions (modules) reside.
extension_dir = ./extensions/
; 或直接設(shè)定成你的絕對(duì)目錄,如:d:/php/extensions/

; GD庫(kù),例如圖片管理系統(tǒng)就會(huì)用到他.
; 這個(gè)檔案在d:/php/extensions/ 下.
extension=php_gd.dll
PHP的優(yōu)點(diǎn)之一是速度很快,對(duì)於一般的網(wǎng)站應(yīng)用,可以說(shuō)已經(jīng)足夠了。不過(guò)如果網(wǎng)站的訪問(wèn)量很高、頻寬窄或其它的因素令伺服器產(chǎn)生效能瓶頸的時(shí)候,你可能得想想其它的辦法來(lái)進(jìn)一步提高PHP的速度了。這篇文章將從幾個(gè)方面介紹如何做到這一點(diǎn),從而令用戶瀏覽的時(shí)候更加「爽」。

程式碼最佳化


在這裡並不想再告訴你
如何寫更乾淨(jìng)的程式碼,這一點(diǎn)我想每個(gè)人都清楚,在需要速度的時(shí)候,你可能已經(jīng)在PHP原始碼的優(yōu)化上面做了不少的工作,這裡所提出的是,這個(gè)煩瑣的工作可以交由其它工具來(lái)完成。這就是Zend Optimizer,此程式可以從Zend Technologies的網(wǎng)站(http://www.zend.com/)免費(fèi)取得。它的原理很簡(jiǎn)單,透過(guò)偵測(cè)Zend引擎產(chǎn)生的中間程式碼,並且優(yōu)化它來(lái)得到更高的執(zhí)行速度。我認(rèn)為優(yōu)化程式碼是一項(xiàng)頗煩瑣的工作,而且優(yōu)化後的程式碼可能變得難以理解,尤其是當(dāng)你放下該P(yáng)HP程式一段時(shí)間後,突然間客戶要求你做一些修改時(shí),可能你自己也不懂了;-)。因此我建議你在PHP的原始碼較為複雜的時(shí)候,用Zend Optimizer來(lái)做這個(gè)優(yōu)化的工作,好處是它不會(huì)讓你的程式碼變得複雜難懂。

安裝Zend Optimizer是非常簡(jiǎn)單的。只要根據(jù)你使用的平臺(tái),下載相關(guān)的預(yù)編譯庫(kù),並且在你的php.ini中加入兩行,重新啟動(dòng)你的web伺服器就行了!

zend_optimizer.optimization_level=15zend_extension="/path/to/ZendOptimizer.so" zend_loader.enable=Off

你可能有點(diǎn)奇怪,不是說(shuō)兩行了。不過(guò)第三行是可選的,看來(lái)禁止這個(gè)zend_loader將會(huì)令優(yōu)化的速度更快,因此不妨在你的php.ini檔案中多加這一行。要注意的是:只有在你不使用Zend Encoder Runtime的時(shí)候,才可以禁止zend_loader,關(guān)於Zend Encoder Runtime,還會(huì)在下文提到。

要更快嗎?使用cache(緩衝)吧

如果你的PHP應(yīng)用還需要更快的速度,下一個(gè)辦法是緩衝。要實(shí)現(xiàn)這一點(diǎn),有幾種不同的方式。我自己就試用過(guò)Zend Cache(評(píng)測(cè)版本),APC和Afterburner Cache。

以上提到的都是「緩衝模組」。它們的原理都差不多,在php檔案被首次請(qǐng)求的時(shí)候,透過(guò)將你的PHP原始碼的中間程式碼儲(chǔ)存在web伺服器的記憶體中,對(duì)於以後同樣的請(qǐng)求,都直接提供記憶體中的「編譯」版本。由於它可以使磁碟的存取達(dá)到最小化,因此這個(gè)方法確實(shí)可以大幅提高PHP的效能。更方便的是,當(dāng)你的PHP原始碼修改時(shí),緩衝的模組可以察覺(jué)到這些變化,並且重新載入一樣,因此你不必?fù)?dān)心客戶得到的是舊版本的程式。這些緩衝的模組確實(shí)不錯(cuò),但是我該選用哪一種呢?以下分別介紹:

Zend Cache是??Zend Technologies的一個(gè)商業(yè)化的產(chǎn)品(它也是免費(fèi)為我們提供PHP引擎和Zend Optimizer的公司)。它確實(shí)不錯(cuò)。在首次運(yùn)行後,你可以明顯察覺(jué)到PHP的速度得到了很大的提高,伺服器的空閒資源也更多了。缺點(diǎn)是你要付費(fèi)購(gòu)買它,但就性價(jià)比來(lái)說(shuō),還是非常值得的。

Afterburner Cache是??Bware Technologies(bwcache.bware.it)提供的免費(fèi)緩衝模組。目前還只是beta版,它所做的工作看來(lái)與Zend Cache差不多,不過(guò)性能的提高就比不上Zend Cache,而且現(xiàn)有的版本不能和Zend Optimizer一起工作,不過(guò)它是免費(fèi)的。

APC(Alternative PHP Cache)是另一個(gè)由Community Connect(apc.communityconnect.com)提供的免費(fèi)模組。它的工作很穩(wěn)定,速度也有不少的提高,要注意的是,我還沒(méi)有找到一個(gè)官方的測(cè)試數(shù)據(jù),這些只是在我的應(yīng)用上作測(cè)試,因此不能下一個(gè)結(jié)論. Web內(nèi)容的壓縮(令你客戶用起來(lái)更「爽」)

經(jīng)過(guò)以上兩個(gè)的方法,相信你的PHP應(yīng)用的性能已經(jīng)得到了很大的提高,現(xiàn)在該從另一個(gè)方面來(lái)考慮了:下載速度。如果你的應(yīng)用程式只是在公司內(nèi)跑,所有的客戶都使用100Mb/s的乙太網(wǎng)路連接到伺服器,這可能不是一個(gè)問(wèn)題,但是如果你的客戶中有使用慢速的modem連接的,你就要考慮使用內(nèi)容壓縮這個(gè)方法了。
根據(jù)IETF的規(guī)範(fàn),大多數(shù)的瀏覽器都支援gzip的內(nèi)
容壓縮。這表示你在將web的內(nèi)容發(fā)給客戶的瀏覽器前,可以先使用gzip進(jìn)行壓縮,瀏覽器在接收的時(shí)候就會(huì)自動(dòng)解壓縮數(shù)據(jù),並且令用戶看到原來(lái)的頁(yè)面。同樣,壓縮web頁(yè)面的內(nèi)容也有幾個(gè)不同的方法。

mod_gzip是Remote Communications(http://www.phpbuilder.com/columns/www.remotecommunications.com)免費(fèi)提供的一個(gè)Apache模組,它可以壓縮靜態(tài)的web頁(yè)面。它運(yùn)作得很好,你只需要將它和apache一起編譯就行了(或?qū)⑺鳛橐粋€(gè)DSO使用)。 Remotecommunications的人說(shuō)它還可以壓縮動(dòng)態(tài)的內(nèi)容,包括mod_php, mod_perl等。不過(guò)我嘗試了一下,看來(lái)並不行。我在mod_gzip的郵件列表中了解到,這個(gè)bug將在下一個(gè)版本中修正(我想應(yīng)該是1.3.14.6f版本)。不過(guò)你還是可以用它來(lái)作靜態(tài)內(nèi)容的壓縮。

不過(guò)我們還想壓縮動(dòng)態(tài)的內(nèi)容,因此我們必須找另外的辦法。一個(gè)方法是使用class.gzip encode.php(http://leknor.com/code/),只要在你的PHP腳本中的開(kāi)頭和結(jié)尾呼叫這個(gè)PHP類,就可以壓縮你的頁(yè)面內(nèi)容。如果整個(gè)網(wǎng)站都需要這樣的壓縮,你可以在你的php.ini檔案中的auto_prepend和auto_append中呼叫這些函數(shù)。它運(yùn)作得很好,不過(guò)在負(fù)載很重的站點(diǎn)上,它明顯會(huì)帶來(lái)一點(diǎn)的系統(tǒng)開(kāi)銷。要詳細(xì)了解它是如何運(yùn)作的,可以看一下它的類別程式碼(你至少需要在編譯PHP時(shí)加入zlib支援)。作者在裡面的說(shuō)明也非常詳細(xì),你可以得到任何你需要了解的東西。

在最近,我也看到了一篇關(guān)於PHP輸出緩衝的文章。它說(shuō)的是PHP4.0.4推出了一種新的輸出緩衝的處理手段--ob_gzhandler,它的作用和上面介紹的類相同,但區(qū)別是你只要在你的php.ini中使用以下的句法就行了:

output_handler = ob_gzhandler ;

這樣將啟動(dòng)PHP的輸出緩衝功能,並且壓縮所有它發(fā)送的東西。出於某些特別的原因,如果你不想在這裡設(shè)定的話,只在需要的地方才改變這個(gè)預(yù)設(shè)的話(不壓縮),只要在需要壓縮的PHP源碼目錄中,修改一下.htaccess檔就行了,使用的句法如下:

php_value output_handler ob_gzhandler

...或直接在你的PHP程式碼中呼叫它,以下面的方式:

ob_start("ob_gzhandler" );

這個(gè)輸出緩衝處理的方法很好,並且不會(huì)為伺服器帶來(lái)額外的系統(tǒng)開(kāi)銷。我十分建議你使用這種方法。它的改變可以用以下的例子說(shuō)明,如果客戶使用的是28.8K的modem的話,經(jīng)過(guò)這個(gè)處理,他將會(huì)認(rèn)為突然間換成了一個(gè)ISDN接入一樣。要注意的一點(diǎn)是:Netscape Communicator並不支援圖象的壓縮,所以將顯示不出來(lái)。因此除非你的客戶全部使用Internet Explorer,否則你必須禁止壓縮jpeg和gif圖象。其它檔案的壓縮應(yīng)該沒(méi)有問(wèn)題,但是我建議你最好測(cè)試一下,特別是瀏覽器使用了不常見(jiàn)的插件或是少人用的瀏覽器。

其它有用的東西...

Zend Technologies的線上商店在今年1月24開(kāi)通了,並且賣一些與PHP相關(guān)的有趣產(chǎn)品。包括前面提到的Zend Cache,Zend Encoder(簡(jiǎn)單說(shuō)來(lái),是PHP代碼的編譯器,可以產(chǎn)生編譯的類,這樣你就可以售賣給顧客而不用擔(dān)心洩露源代碼。在需要運(yùn)行這些類的web伺服器上,將要使用Zend Encoder Runtime來(lái)解碼),Zend Ide(一個(gè)為PHP而設(shè)的集成開(kāi)發(fā)環(huán)境,帶有很多強(qiáng)大的性能),還有為PHP開(kāi)發(fā)者提供的支援服務(wù)。

結(jié)論

使用這篇文章提到的技術(shù),你將可以大大提高站點(diǎn)的性能,不過(guò)請(qǐng)注意以下幾點(diǎn):

1.瓶頸或許不在PHP,你需要考察應(yīng)用程式中的每個(gè)物件(例如資料庫(kù))

2.一個(gè)web伺服器的效能都是有限制的,因此,不要認(rèn)為效能不好就是PHP的原因,也可能是訪問(wèn)量很大,你的伺服器需要升級(jí)了,或考慮使用負(fù)載平衡的系統(tǒng)(將會(huì)花很多錢)

3.不要認(rèn)為內(nèi)容壓縮不重要,在100Mb/s的區(qū)域網(wǎng)路中,你的PHP應(yīng)用程式或許效能很好,但要考慮到使用慢速modem的使用者。

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/314745.htmlTechArticlePhp設(shè)定問(wèn)題;;;;;;;;;;;;;;;;;;;;; ;;;;;;;; ; Error handling and logging ; ; error_reporting is a bit-field. Or each number up to get desired error ; reporting level ; E_ALL - All...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

如何在PHP中獲取當(dāng)前的會(huì)話ID? 如何在PHP中獲取當(dāng)前的會(huì)話ID? Jul 13, 2025 am 03:02 AM

在PHP中獲取當(dāng)前會(huì)話ID的方法是使用session_id()函數(shù),但必須先調(diào)用session_start()才能成功獲取。 1.調(diào)用session_start()啟動(dòng)會(huì)話;2.使用session_id()讀取會(huì)話ID,輸出類似abc123def456ghi789的字符串;3.若返回為空,檢查是否遺漏session_start()、用戶是否首次訪問(wèn)或會(huì)話是否被銷毀;4.會(huì)話ID可用於日誌記錄、安全驗(yàn)證和跨請(qǐng)求通信,但需注意安全性。確保正確開(kāi)啟會(huì)話後即可順利獲取ID。

php從字符串獲取子字符串 php從字符串獲取子字符串 Jul 13, 2025 am 02:59 AM

要從PHP字符串中提取子字符串,可使用substr()函數(shù),其語(yǔ)法為substr(string$string,int$start,?int$length=null),若未指定長(zhǎng)度則截取至末尾;處理多字節(jié)字符如中文時(shí)應(yīng)使用mb_substr()函數(shù)以避免亂碼;若需根據(jù)特定分隔符截取字符串,可使用explode()或結(jié)合strpos()與substr()實(shí)現(xiàn),例如提取文件名擴(kuò)展名或域名。

您如何執(zhí)行PHP代碼的單元測(cè)試? 您如何執(zhí)行PHP代碼的單元測(cè)試? Jul 13, 2025 am 02:54 AM

UnittestinginPHPinvolvesverifyingindividualcodeunitslikefunctionsormethodstocatchbugsearlyandensurereliablerefactoring.1)SetupPHPUnitviaComposer,createatestdirectory,andconfigureautoloadandphpunit.xml.2)Writetestcasesfollowingthearrange-act-assertpat

如何將字符串分為PHP中的數(shù)組 如何將字符串分為PHP中的數(shù)組 Jul 13, 2025 am 02:59 AM

在PHP中,最常用的方法是使用explode()函數(shù)將字符串拆分為數(shù)組。該函數(shù)通過(guò)指定的分隔符將字符串分割成多個(gè)部分並返回?cái)?shù)組,語(yǔ)法為explode(separator,string,limit),其中separator為分隔符,string為原字符串,limit為可選參數(shù)控制最大分割數(shù)量。例如$str="apple,banana,orange";$arr=explode(",",$str);結(jié)果為["apple","bana

JavaScript數(shù)據(jù)類型:原始與參考 JavaScript數(shù)據(jù)類型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時(shí)復(fù)制副本,因此互不影響;引用類型如對(duì)象、數(shù)組和函數(shù)存儲(chǔ)的是內(nèi)存地址,指向同一對(duì)象的變量會(huì)相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問(wèn)題。理解這兩類差異有助於編寫更穩(wěn)定可靠的代碼。

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用於處理時(shí)間,包括獲取當(dāng)前時(shí)間、測(cè)量執(zhí)行時(shí)間、操作時(shí)間點(diǎn)與持續(xù)時(shí)間及格式化解析時(shí)間。 1.獲取當(dāng)前時(shí)間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但係統(tǒng)時(shí)鐘可能不單調(diào);2.測(cè)量執(zhí)行時(shí)間應(yīng)使用std::chrono::steady_clock以確保單調(diào)性,並通過(guò)duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時(shí)間點(diǎn)(time_point)和持續(xù)時(shí)間(duration)可相互操作,但需注意單位兼容性和時(shí)鐘紀(jì)元(epoch)

如何將會(huì)話變量傳遞給PHP中的另一頁(yè)? 如何將會(huì)話變量傳遞給PHP中的另一頁(yè)? Jul 13, 2025 am 02:39 AM

在PHP中,要將一個(gè)會(huì)話變量傳到另一個(gè)頁(yè)面,關(guān)鍵在於正確開(kāi)啟會(huì)話並使用相同的$_SESSION鍵名。 1.每個(gè)頁(yè)面使用session變量前必須調(diào)用session_start(),且放在腳本最前面;2.在第一個(gè)頁(yè)面設(shè)置session變量如$_SESSION['username']='JohnDoe';3.在另一頁(yè)面同樣調(diào)用session_start()後通過(guò)相同鍵名訪問(wèn)變量;4.確保每個(gè)頁(yè)面都調(diào)用session_start()、避免提前輸出內(nèi)容、檢查服務(wù)器上session存儲(chǔ)路徑可寫;5.使用ses

PHP如何處理環(huán)境變量? PHP如何處理環(huán)境變量? Jul 14, 2025 am 03:01 AM

toAccessenvironmentVariablesInphp,useGetenv()或$ _envsuperglobal.1.getEnv('var_name')retievesSpecificvariable.2。 $ _ en v ['var_name'] accessesvariablesifvariables_orderInphp.iniincludes“ e” .setVariablesViaCliWithvar = vualitephpscript.php,inapach

See all articles