這篇文章主要給大家介紹了關於PHP7如何開啟Opcode打造強悍性能的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
前言
鳥哥在部落格中說,提高PHP 7效能的幾個tips,第一條就是開啟opcache:
記得啟用Zend Opcache, 因為PHP7即使不啟用Opcache速度也比PHP-5.6啟用了Opcache快, 所以之前測試時期就發生了有人一直沒有啟用Opcache的事情
那麼什麼是Opcache呢?
Opcache 的前生是 Optimizer ,它是PHP的官方公司 Zend 開發的閉源但可以免費使用的 PHP 優化加速元件。 Optimizer 將PHP程式碼預先編譯產生的腳本檔案 Opcode 快取在共享記憶體中以供日後重複使用,避免了從磁碟讀取程式碼再次編譯的時間消耗。同時,它也應用了一些程式碼最佳化模式,使得程式碼執行更快。從而加速PHP的執行。
PHP的正常執行流程如下
request請求(nginx,apache,cli等)-->Zend引擎讀取.php檔案-- >掃描其字典和表達式-->解析檔-->建立要執行的電腦程式碼(稱為Opcode)-->最後執行Opcode--> response 回傳
每一次請求PHP腳本都會執行一遍以上步驟,如果PHP原始碼沒有變化,那麼Opcode也不會變化,顯然沒有必要每次都重新產生Opcode,結合在Web中無所不在的快取機制,我們可以把Opcode快取下來,以後直接存取快取的Opcode豈不是更快,啟用Opcode快取之後的流程圖如下所示:
Opcode cache 的目地是避免重複編譯,減少CPU 和記憶體開銷。
下面介紹Opcache的安裝
安裝:
1、找到opcache的擴展,我的是php7.1
yum list php71*
2、安裝擴充功能
yum install php71w-opcache.x86_64##設定:
zend_extension=opcache.so[opcache]
;CLI環境下,PHP啟用OPcache
;開啟opcache
opcache.enable=1opcache.enable_cli=1
;OPcache共享記憶體儲存大小,單位MBopcache.memory_consumption=128
;PHP使用了一種稱為字串駐留(string interning)的技術來改善效能。例如,如果你在程式碼中使用了1000次字串“foobar”,在PHP內部只會在第一個使用這個字串的時候分配一個不可變的記憶體區域來儲存這個字串,其他的999次使用都會直接指向這個記憶體區域。這個選項則會把這個特性提升一個層次-預設這個不可變的記憶體區域只會存在於單一php-fpm的進程中,如果設定了這個選項,那麼它將會在所有的php-fpm進程中共享。在比較大的應用中,這可以非常有效地節約內存,並提高應用的效能。這個選項的值是以兆位元組(megabytes)作為單位,如果把它設為16,則表示16MB,預設是4MB
;這個選項用於控制記憶體中最多可以快取多少個PHP檔案。這個選項必須得設定得夠大,大於你的專案中的所有PHP檔案的總和。
opcache.interned_strings_buffer=8設定值取值範圍最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 之後是 1000000。也就是說在200到1000000之間。
;設定快取的過期時間(單位是秒),為0的話每次都要檢查
opcache.max_accelerated_files=4000opcache.revalidate_freq=60
;從字面上理解就是「允許更快速關閉」。它的作用是在單一請求結束時提供一種更快速的機制來呼叫程式碼中的析構器,從而加快PHP的回應速度和PHP進程資源的回收速度,這樣應用程式可以更快速地回應下一個請求。把它設定為1就可以使用這個機制了。opcache.fast_shutdown=1
;如果啟用(設定為1),OPcache會在opcache.revalidate_freq設定的秒數去偵測檔案的時間戳記(timestamp)檢查腳本是否更新。
如果這個選項被停用(設定為0),opcache.revalidate_freq會被忽略,PHP檔案永遠不會被檢查。這意味著如果你修改了你的程式碼,然後你把它更新到伺服器上,再在瀏覽器上請求更新的程式碼對應的功能,你會看不到更新的效果
強烈建議你在生產環境中設定為0,更新程式碼後,再平滑重啟PHP和web伺服器。
opcache.validate_timestamps=0;開啟Opcache File Cache(實驗性), 透過開啟這個, 我們可以讓Opcache把opcode快取快取到外部文件中, 對於一些腳本, 會有很明顯的效能提升.
這樣PHP就會在/tmp目錄下Cache一些Opcode的二進位匯出檔, 可以跨PHP生命週期存在.
opcache.file_cache=/tmp
#查看phpinfo :
測試結果:
#同樣的介面從以前的幾百毫秒提升到現在的50ms左右
總結
###################################################################################################### ######PHP7基於curl實作的上傳圖片功能php技巧###########################
以上是PHP7如何開啟Opcode打造強悍效能詳解php技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!