您的位置:首頁 >  新聞中心 > 云通訊公告
  云通訊公告
 

通過 PHP OPcache 讓你的 Laravel 應(yīng)用飛起來

來源:原創(chuàng)    時(shí)間:2017-06-21    瀏覽:0 次


啥是 Opcache

 

每一次履行 PHP 腳本的時(shí)分,該腳本都需求被編譯成字節(jié)碼,而 OPcache 能夠?qū)υ撟止?jié)碼進(jìn)行緩存,這么,下次懇求同一個(gè)腳本的時(shí)分,該腳本就不需求從頭編譯,這極大節(jié)省了腳本的履行時(shí)間,然后讓運(yùn)用運(yùn)轉(zhuǎn)速度更快,一起也節(jié)省了服務(wù)器的開支。

用數(shù)字說話

 

咱們當(dāng)然很想知道究竟進(jìn)行了如何的優(yōu)化,雖然功能提高高度依賴于運(yùn)用和服務(wù)器的裝備,不過咱們能夠經(jīng)過運(yùn)轉(zhuǎn)基準(zhǔn)測(cè)驗(yàn)(benchmark)有一個(gè)大約的了解。

為此我專門預(yù)備了一個(gè)很低裝備的機(jī)器:1核CPU,1G內(nèi)存來運(yùn)轉(zhuǎn) Apache 基準(zhǔn)測(cè)驗(yàn)。我懇求的是 Laravel 5.4 默許的期待頁面,讓 10 個(gè)并發(fā)懇求持續(xù)拜訪 1 分鐘,以下是封閉 OPcache 的基準(zhǔn)測(cè)驗(yàn)成果:

OPcache disabled: 10.18 requests per second

關(guān)于一個(gè)這么低裝備的服務(wù)器而言,這也不算太壞,可是咱們能夠做得非常好。敞開 OPcache 的基準(zhǔn)測(cè)驗(yàn)成果如下(運(yùn)用默許 OPcache 裝備):

Enabled with default values: 34.52 requests per second

距離仍是很大的!咱們接下來對(duì) OPcache 裝備進(jìn)行優(yōu)化,基準(zhǔn)測(cè)驗(yàn)的體現(xiàn)作用非常好:

Enabled with optimized values: 42.53 requests per second

這把服了沒有?

聽起來很牛逼,不過怎樣運(yùn)用呢

 

首要,咱們需求保證在服務(wù)器上裝置了 OPcache,從 PHP 5.5 開端,OPcache 現(xiàn)已成為 PHP 中心的一部分,所以關(guān)于 Laravel 開發(fā)者而言,基本上不需求手動(dòng)去裝置這個(gè)拓展。

當(dāng)然,假如不放心,能夠經(jīng)過查看 phpinfo() 進(jìn)行承認(rèn):


該腳本會(huì)顯現(xiàn)一切 PHP 裝置的拓展。在頁面查找 “OPcache”,假如找到,證實(shí)現(xiàn)已裝置。假如沒有,則需求自個(gè)去裝置。

接下來,咱們需求在 PHP 的裝備文件中啟用 OPcache(默許是封閉的):

opcache.enable=1

下面咱們持續(xù)對(duì) OPcache 進(jìn)行一些優(yōu)化裝備:

opcache.memory_consumption=512

這個(gè)裝備表明你想要分配給 OPcache 的內(nèi)存空間(單位:MB),設(shè)置一個(gè)大于 64 的值即可。

opcache.interned_strings_buffer=64

這個(gè)裝備表明你想要分配給實(shí)踐字符串的空間(單位:MB),設(shè)置一個(gè)大于 16 的值即可。

opcache.max_accelerated_files=32531

這個(gè)裝備表明能夠緩存多少個(gè)腳本,將這個(gè)值盡也許設(shè)置為與項(xiàng)目包括的腳本數(shù)挨近(或更大)。

opcache.validate_timestamps=0

改裝備值用于從頭驗(yàn)證腳本,假如設(shè)置為 0(功能最好),需求手動(dòng)在每次 PHP 代碼更改后手動(dòng)鏟除 OPcache。假如你不想要手動(dòng)鏟除,能夠?qū)⑵湓O(shè)置為 1 并經(jīng)過 opcache.revalidate_freq 裝備從頭驗(yàn)證距離,這也許會(huì)耗費(fèi)一些功能,由于需求每隔 x 秒查看更改。

opcache.save_comments=1

這個(gè)裝備會(huì)在腳本中保留注釋,我引薦敞開該選項(xiàng),由于一些庫依賴于這個(gè)裝備,而且我也找不出啥封閉它的優(yōu)點(diǎn)。

opcache.fast_shutdown=0

迅速封閉會(huì)給一個(gè)更迅速整理內(nèi)存的機(jī)制,不過,在我的基準(zhǔn)測(cè)驗(yàn)中,更慢一些,也許這會(huì)運(yùn)用帶來一些功能提高,可是你需求自個(gè)去測(cè)驗(yàn)。

所以,終究的裝備優(yōu)化長(zhǎng)這么:

opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.fast_shutdown=0

你能夠運(yùn)用這些裝備值進(jìn)行試驗(yàn),詳細(xì)裝備值取決于你的運(yùn)用巨細(xì)和服務(wù)器裝備。

最終,保留這個(gè)裝備文件并重啟 Web 服務(wù)器,你的運(yùn)用肯定會(huì)變得更快。

預(yù)備好 Laravel 運(yùn)用

 

前面說到,opcache.validate_timestamps 設(shè)置為 0 的話咱們需求在每次修正 PHP 代碼后手動(dòng)鏟除 OPcache。為此我創(chuàng)建了一個(gè)拓展包來供給相應(yīng)的 Artisan 指令處理 OPcache 整理事宜:https://github.com/appstract/laravel-opcache。

裝置完拓展后,只需履行如下指令即可整理 OPcache:


免费视频观无码一区,国内精品一区二区无码,99精品无码视频在线播放,ā片国产在线播放