讓子彈飛~利用OPcache擴(kuò)展提升PHP7性能 | laravel篇

前言
十一點(diǎn)半了,沉淀時(shí)間到了抓歼。

PHP在運(yùn)行的時(shí)候讥此,存在這樣的一個(gè)流程,先將PHP代碼預(yù)編譯谣妻,生成字節(jié)碼后再加載到內(nèi)存里萄喳,最后CPU在內(nèi)存上執(zhí)行編譯后的字節(jié)碼片段。我們會(huì)發(fā)現(xiàn)蹋半,在執(zhí)行PHP程序的時(shí)候他巨,每次都經(jīng)過這樣的流程,此非浪費(fèi)Time减江,是的染突,很容易聯(lián)想到:為何不向C++語言看齊呢,將源碼編譯成可直接加載到內(nèi)存so哥呢辈灼?呃呃??份企。快拿出你的步槍巡莹,裝上這顆子彈OPcache司志。自從PHP5.5.0出來后甜紫,就內(nèi)置此zend擴(kuò)展了。


What is OPcache
OPcache是PHP中的Zend擴(kuò)展骂远,可以大大提升PHP的性能棵介。
OPcache 通過將 PHP 腳本預(yù)編譯的字節(jié)碼存儲(chǔ)到共享內(nèi)存中來提升 PHP 的性能, 存儲(chǔ)預(yù)編譯字節(jié)碼的好處就是 省去了每次加載和解析 PHP 腳本的開銷吧史。


Judge whether it has been extended OPcache

?  ~ php -m | grep OPcache
Zend OPcache
Zend OPcache

倘若沒有開啟的話邮辽,可以在php.ini配置中開啟
/home/samego/service/php7.2/php.ini

?  ~ echo zend_extension="opcache.so" >> /home/samego/service/php7.2/php.ini

About OPcache configure
接下來,我們需要在 PHP 的配置文件中啟用 OPcache(默認(rèn)是關(guān)閉的):

opcache.enable=1

下面我們繼續(xù)對 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)清除阎毅,可以將其設(shè)置為 1 并通過 opcache.revalidate_freq 配置重新驗(yàn)證間隔焚刚,這可能會(huì)消耗一些性能,因?yàn)樾枰扛?x 秒檢查更改扇调。

opcache.save_comments=1

這個(gè)配置會(huì)在腳本中保留注釋矿咕,我推薦開啟該選項(xiàng),因?yàn)橐恍煲蕾囉谶@個(gè)配置狼钮,并且我也找不出什么關(guān)閉它的好處碳柱。

opcache.fast_shutdown=0

快速關(guān)閉會(huì)給一個(gè)更快速清理內(nèi)存的機(jī)制,不過熬芜,在我的基準(zhǔn)測試中莲镣,更慢一些,可能這會(huì)應(yīng)用帶來一些性能提升涎拉,但是你需要自己去嘗試瑞侮。

所以,最終的配置優(yōu)化長這樣:

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

你可以使用這些配置值進(jìn)行實(shí)驗(yàn)曼库,具體配置值取決于你的應(yīng)用大小和服務(wù)器配置区岗。
學(xué)習(xí)于Laravel社區(qū)


Laravel OPcache

  • install
?  ~ composer require appstract/laravel-opcache
  • configure
?  ~ php artisan vendor:publish --provider="Appstract\Opcache\OpcacheServiceProvider" --tag="config"
  • command
# Clear OPcache:
?  ~ php artisan opcache:clear

# Show OPcache config:
?  ~ php artisan opcache:config

# Show OPcache status:
?  ~ php artisan opcache:status

# Pre-compile your application code:
?  ~ php artisan opcache:optimize

拭目以待的場景測試

個(gè)人比較喜歡數(shù)據(jù)說話
場景:(1)請求GET接口 (2)測試次數(shù)10 (3)并發(fā)數(shù)為100

case non-extension

1000個(gè)請求略板,花費(fèi)32.32秒毁枯,每秒30.94個(gè)請求

Transactions:               1000 hits
Availability:             100.00 %
Elapsed time:              32.32 secs
Data transferred:           0.97 MB
Response time:              0.32 secs
Transaction rate:          30.94 trans/sec
Throughput:             0.03 MB/sec
Concurrency:                9.96
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            0.44
Shortest transaction:           0.11

case had extend

1000個(gè)請求,花費(fèi)2.94秒叮称,每秒340.14個(gè)請求

Transactions:               1000 hits
Availability:             100.00 %
Elapsed time:               2.94 secs
Data transferred:           0.97 MB
Response time:              0.03 secs
Transaction rate:         340.14 trans/sec
Throughput:             0.33 MB/sec
Concurrency:                9.86
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            0.29
Shortest transaction:           0.01

看到這組數(shù)據(jù)种玛,我甚是高興藐鹤,無比的喜悅。在性能方面赂韵,形成如此鮮明的對比娱节,我二話不說~OPcache is right
(|3[▓▓] 晚安
價(jià)值源于技術(shù),技術(shù)源于分享祭示!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肄满,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子质涛,更是在濱河造成了極大的恐慌稠歉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汇陆,死亡現(xiàn)場離奇詭異怒炸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)毡代,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門阅羹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人教寂,你說我怎么就攤上這事捏鱼。” “怎么了酪耕?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵穷躁,是天一觀的道長。 經(jīng)常有香客問我因妇,道長问潭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任婚被,我火速辦了婚禮狡忙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘址芯。我一直安慰自己灾茁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布谷炸。 她就那樣靜靜地躺著北专,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旬陡。 梳的紋絲不亂的頭發(fā)上拓颓,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音描孟,去河邊找鬼驶睦。 笑死砰左,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的场航。 我是一名探鬼主播缠导,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溉痢!你這毒婦竟也來了僻造?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對情侶失蹤孩饼,失蹤者是張志新(化名)和其女友劉穎嫡意,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捣辆,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔬螟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汽畴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旧巾。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忍些,靈堂內(nèi)的尸體忽然破棺而出鲁猩,到底是詐尸還是另有隱情,我是刑警寧澤罢坝,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布廓握,位于F島的核電站,受9級(jí)特大地震影響嘁酿,放射性物質(zhì)發(fā)生泄漏隙券。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一闹司、第九天 我趴在偏房一處隱蔽的房頂上張望娱仔。 院中可真熱鬧,春花似錦游桩、人聲如沸牲迫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盹憎。三九已至,卻和暖如春铐刘,著一層夾襖步出監(jiān)牢的瞬間陪每,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奶稠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓捡遍,卻偏偏與公主長得像锌订,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子画株,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理辆飘,服務(wù)發(fā)現(xiàn),斷路器谓传,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 內(nèi)存是計(jì)算機(jī)非常關(guān)鍵的部件之一蜈项,是暫時(shí)存儲(chǔ)程序以及數(shù)據(jù)的空間,CPU只有有限的寄存器可以用于 存儲(chǔ)計(jì)算數(shù)據(jù)续挟,而大部...
    dreamer_lk閱讀 1,198評(píng)論 2 10
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,104評(píng)論 25 707
  • 從三月份找實(shí)習(xí)到現(xiàn)在紧卒,面了一些公司,掛了不少诗祸,但最終還是拿到小米跑芳、百度、阿里直颅、京東博个、新浪、CVTE功偿、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,246評(píng)論 11 349