搜尋
首頁後端開發PHP7利用 OPcache 擴充提升 PHP7 效能技巧

利用 OPcache 擴充提升 PHP7 效能技巧

推薦(免費):PHP7

No matter where I am, I will reply you immediately when I see the email.My Email: echo "YUBzYW1lZ28uY29tCg==" | base64 -d
前言
十一半了,沉澱時間到了。

PHP在運作的時候,存在這樣的一個流程,先將PHP程式碼預先編譯,生成字節碼後再載入到記憶體裡,最後CPU在記憶體上執行編譯後的位元組碼片段。我們會發現,在執行PHP程式的時候,每次都經過這樣的流程,此非浪費Time,是的,很容易聯想到:為何不向C 語言看齊呢,將源碼編譯成可直接加載到內存so哥呢?呃呃?。快拿出你的步槍,裝上這顆子彈OPcache。自從PHP5.5.0出來後,就內建此zend擴充了。


What 是 OPcache
OPcache是PHP中的Zend擴展,可以大幅提升PHP的效能。
OPcache 透過將 PHP 腳本預先編譯的字節碼儲存到共享記憶體來提升 PHP 的效能, 儲存預先編譯字節碼的好處就是 省去了每次載入和解析 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 (預設是關閉的):

opcache.enable=1

下面我們繼續對OPcache 進行一些優化配置:

opcache.memory_consumption=512

這個配置表示你想要分配給OPcache 的記憶體空間(單位:MB),設置一個大於64 的值即可。

opcache.interned_strings_buffer=64

這個配置表示你想要指派給實際字串的空間(單位:MB),設定一個大於 16 的值即可。

opcache.max_accelerated_files=32531

這個設定表示可以快取多少個腳本,將這個值盡可能設定為與專案包含的腳本數接近(或更大)。

opcache.validate_timestamps=0

改為配置值用於重新驗證腳本,如果設定為 0(效能最佳),則需要手動在每次 PHP 程式碼變更後手動清除 OPcache。如果你不想要手動清除,可以將其設為 1 並透過 opcache.revalidate_freq 設定重新驗證間隔,這可能會消耗一些效能,因為需要每隔 x 秒檢查更改。

opcache.save_comments=1

這個配置會在腳本中保留註釋,我推薦開啟該選項,因為有些函式庫依賴這個配置,我也找不出什麼關閉它的好處。

opcache.fast_shutdown=0

快速關閉會給一個更快速清理記憶體的機制,不過,在我的基準測試中,更慢一些,可能這會應用帶來一些效能提升,但是你需要自己去嘗試。

所以,最終的設定最佳化長這樣:

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

你可以使用這些設定值進行實驗,具體設定值取決於你的應用程式大小和伺服器設定。
學習Laravel社群


Laravel OPcache

  • install

    ➜  ~ composer require appstract/laravel-opcache
  • #configure

    ➜  ~ php artisan vendor:publish --provider="Appstract\Opcache\OpcacheServiceProvider" --tag="config"
  • command

個人比較喜歡資料說話

場景:(1)請求GET介面(2)測試次數10  (3)並發數為100

case non-extension


1000個請求,花費32.32秒,每秒30.94個請求

# 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
case had extend

#1000個請求,花費2.94秒,每秒340.14個請求

<pre class="brush:php;toolbar:false">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</pre>

看到這組數據,我甚是高興,無比的喜悅。在性能方面,形成如此鮮明的對比,我二話不說~OPcache is right

                           

  #  

以上是利用 OPcache 擴充提升 PHP7 效能技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),