您好,登錄后才能下訂單哦!
PHP7如何用Opcache擴(kuò)展提升性能?相信很多新手小白對此束手無策,這篇文章介紹了Opcache擴(kuò)展以及如何用Opcache擴(kuò)展提升PHP7性能,希望你能找到解決的方法。
什么是Opcache呢?
Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 開發(fā)的一款閉源但可以免費使用的 PHP 優(yōu)化加速組件。 Optimizer+ 將PHP代碼預(yù)編譯生成的腳本文件 Opcode 緩存在共享內(nèi)存中供以后反復(fù)使用,從而避免了從磁盤讀取代碼再次編譯的時間消耗。同時,它還應(yīng)用了一些代碼優(yōu)化模式,使得代碼執(zhí)行更快。從而加速PHP的執(zhí)行。
PHP的正常執(zhí)行流程如下
request請求(nginx,apache,cli等)-->Zend引擎讀取.php文件-->掃描其詞典和表達(dá)式 -->解析文件-->創(chuàng)建要執(zhí)行的計算機(jī)代碼(稱為Opcode)-->最后執(zhí)行Opcode--> response 返回
每一次請求PHP腳本都會執(zhí)行一遍以上步驟,如果PHP源代碼沒有變化,那么Opcode也不會變化,顯然沒有必要每次都重新生成Opcode,結(jié)合在Web中無所不在的緩存機(jī)制,我們可以把Opcode緩存下來,以后直接訪問緩存的Opcode豈不是更快,啟用Opcode緩存之后的流程圖如下所示:
Opcode cache 的目地是避免重復(fù)編譯,減少 CPU 和內(nèi)存開銷。
下面介紹Opcache的安裝
安裝:
1、找到opcache的擴(kuò)展,我的是php7.1
yum list php71*
2、安裝擴(kuò)展
yum install php71w-opcache.x86_64
配置:
zend_extension=opcache.so [opcache] ;開啟opcache opcache.enable=1 ;CLI環(huán)境下,PHP啟用OPcache opcache.enable_cli=1 ;OPcache共享內(nèi)存存儲大小,單位MB opcache.memory_consumption=128 ;PHP使用了一種叫做字符串駐留(string interning)的技術(shù)來改善性能。例如,如果你在代碼中使用了1000次字符串“foobar”,在PHP內(nèi)部只會在第一使用這個字符串的時候分配一個不可變的內(nèi)存區(qū)域來存儲這個字符串,其他的999次使用都會直接指向這個內(nèi)存區(qū)域。這個選項則會把這個特性提升一個層次——默認(rèn)情況下這個不可變的內(nèi)存區(qū)域只會存在于單個php-fpm的進(jìn)程中,如果設(shè)置了這個選項,那么它將會在所有的php-fpm進(jìn)程中共享。在比較大的應(yīng)用中,這可以非常有效地節(jié)約內(nèi)存,提高應(yīng)用的性能。 這個選項的值是以兆字節(jié)(megabytes)作為單位,如果把它設(shè)置為16,則表示16MB,默認(rèn)是4MB opcache.interned_strings_buffer=8 ;這個選項用于控制內(nèi)存中最多可以緩存多少個PHP文件。這個選項必須得設(shè)置得足夠大,大于你的項目中的所有PHP文件的總和。 設(shè)置值取值范圍最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。也就是說在200到1000000之間。 opcache.max_accelerated_files=4000 ;設(shè)置緩存的過期時間(單位是秒),為0的話每次都要檢查 opcache.revalidate_freq=60 ;從字面上理解就是“允許更快速關(guān)閉”。它的作用是在單個請求結(jié)束時提供一種更快速的機(jī)制來調(diào)用代碼中的析構(gòu)器,從而加快PHP的響應(yīng)速度和PHP進(jìn)程資源的回收速度,這樣應(yīng)用程序可以更快速地響應(yīng)下一個請求。把它設(shè)置為1就可以使用這個機(jī)制了。 opcache.fast_shutdown=1 ;如果啟用(設(shè)置為1),OPcache會在opcache.revalidate_freq設(shè)置的秒數(shù)去檢測文件的時間戳(timestamp)檢查腳本是否更新。 如果這個選項被禁用(設(shè)置為0),opcache.revalidate_freq會被忽略,PHP文件永遠(yuǎn)不會被檢查。這意味著如果你修改了你的代碼,然后你把它更新到服務(wù)器上,再在瀏覽器上請求更新的代碼對應(yīng)的功能,你會看不到更新的效果 強(qiáng)烈建議你在生產(chǎn)環(huán)境中設(shè)置為0,更新代碼后,再平滑重啟PHP和web服務(wù)器。 opcache.validate_timestamps=0 ;開啟Opcache File Cache(實驗性), 通過開啟這個, 我們可以讓Opcache把opcode緩存緩存到外部文件中, 對于一些腳本, 會有很明顯的性能提升. 這樣PHP就會在/tmp目錄下Cache一些Opcode的二進(jìn)制導(dǎo)出文件, 可以跨PHP生命周期存在. opcache.file_cache=/tmp
查看phpinfo:
測試結(jié)果:
以上就是Opcache擴(kuò)展以及如何用Opcache擴(kuò)展提升PHP7性能的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。