無障礙 無障礙閱讀 開始适老模式

智網科(kē)技(jì )在挑戰中(zhōng)誕生

迎難不懼,逆風前行,挑戰成為(wèi)我們的習慣

當前位置:首頁(yè)>幫助中(zhōng)心>網站知識
全部 131 網站知識 44 400電(diàn)話 68 VR知識 5 微信服務(wù) 8 ICT文(wén)檔 6

PHP7如何開啓ZendOpcache進一步提升網站性能(néng)

時間:2022-10-23   訪問量:112

先來了解了解什麽是Zend Opcache:

Opcache 的前生是 Optimizer+ ,它是PHP的官方公(gōng)司 Zend 開發的一款閉源但可(kě)以免費使用(yòng)的 PHP 優化加速組件。 Optimizer+ 将PHP代碼預編譯生成的腳本文(wén)件 Opcode 緩存在共享内存中(zhōng)供以後反複使用(yòng),從而避免了從磁盤讀取代碼再次編譯的時間消耗。同時,它還應用(yòng)了一些代碼優化模式,使得代碼執行更快。從而加速PHP的執行。

說簡單點就是Opcode cache 的目地是避免重複編譯,減少 CPU 和内存開銷。

我相信,很(hěn)多(duō)人之前并沒有(yǒu)了解過,現在php7.x就算不開啓ZendOpcache也比php5.x開啓ZendOpcache快喲,所以php7.x開啓opcache性能(néng)我這裏就不多(duō)介紹了,如果你的網站小(xiǎo)時峰值不超萬,其實開不開Opcache也沒有(yǒu)太大感受,下面還是分(fēn)享一下如果安(ān)裝(zhuāng)和使用(yòng)Opcache吧。

 一:windows安(ān)裝(zhuāng)

1.檢查查PHP根目錄下面的ext目錄中(zhōng)有(yǒu)沒有(yǒu)php_opcache.dll,沒有(yǒu)的話需要自行下載,PHP 5.5開始已經自帶了php_opcache.dll,沒有(yǒu)的自行下載後COPY到PHP安(ān)裝(zhuāng)目錄下的EXT中(zhōng)。

2.打開php.ini直接搜索opcache 找到這段;zend_extension="你自己的php_opcache.dll的絕對路徑" 删除前面的分(fēn)号啓用(yòng)

3.重啓服務(wù),打開phpinfo 搜索Zend Opcache看到這個就表示配置成功,很(hěn)簡單

二:服務(wù)器安(ān)裝(zhuāng) 

1、找到opcache的擴展,我的是php7.2

        yum list php70*

2、安(ān)裝(zhuāng)擴展

        yum install php70w-opcache.x86_64

配置

        zend_extension=opcache.so

        [opcache]

        ;開啓opcache

        opcache.enable=1  

        ;CLI環境下,PHP啓用(yòng)OPcache

        opcache.enable_cli=1

        ;OPcache共享内存存儲大小(xiǎo),單位MB

        opcache.memory_consumption=128  

 ;PHP使用(yòng)了一種叫做字符串駐留(string interning)的技(jì )術來改善性能(néng)。例如,如果你在代碼中(zhōng)使用(yòng)了1000次字符串“foobar”,在PHP内部隻會在第一使用(yòng)這個字符串的時候分(fēn)配一個不可(kě)變的内存區(qū)域來存儲這個字符串,其他(tā)的999次使用(yòng)都會直接指向這個内存區(qū)域。這個選項則會把這個特性提升一個層次——默認情況下這個不可(kě)變的内存區(qū)域隻會存在于單個php-fpm的進程中(zhōng),如果設置了這個選項,那麽它将會在所有(yǒu)的php-fpm進程中(zhōng)共享。在比較大的應用(yòng)中(zhōng),這可(kě)以非常有(yǒu)效地節約内存,提高應用(yòng)的性能(néng)。

這個選項的值是以兆字節(megabytes)作(zuò)為(wèi)單位,如果把它設置為(wèi)16,則表示16MB,默認是4MB

        opcache.interned_strings_buffer=8

這個選項用(yòng)于控制内存中(zhōng)最多(duō)可(kě)以緩存多(duō)少個PHP文(wén)件。這個選項必須得設置得足夠大,大于你的項目中(zhōng)的所有(yǒu)PHP文(wén)件的總和。

設置值取值範圍最小(xiǎo)值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之後是 1000000。也就是說在200到1000000之間。

        opcache.max_accelerated_files=4000

設置緩存的過期時間(單位是秒(miǎo)),為(wèi)0的話每次都要檢查

        opcache.revalidate_freq=60

從字面上理(lǐ)解就是“允許更快速關閉”。它的作(zuò)用(yòng)是在單個請求結束時提供一種更快速的機制來調用(yòng)代碼中(zhōng)的析構器,從而加快PHP的響應速度和PHP進程資源的回收速度,這樣應用(yòng)程序可(kě)以更快速地響應下一個請求。把它設置為(wèi)1就可(kě)以使用(yòng)這個機制了。

        opcache.fast_shutdown=1

如果啓用(yòng)(設置為(wèi)1),OPcache會在opcache.revalidate_freq設置的秒(miǎo)數去檢測文(wén)件的時間戳(timestamp)檢查腳本是否更新(xīn)。

如果這個選項被禁用(yòng)(設置為(wèi)0),opcache.revalidate_freq會被忽略,PHP文(wén)件永遠(yuǎn)不會被檢查。這意味着如果你修改了你的代碼,然後你把它更新(xīn)到服務(wù)器上,再在浏覽器上請求更新(xīn)的代碼對應的功能(néng),你會看不到更新(xīn)的效果

強烈建議你在生産(chǎn)環境中(zhōng)設置為(wèi)0,更新(xīn)代碼後,再平滑重啓PHP和web服務(wù)器。

        opcache.validate_timestamps=0

開啓Opcache File Cache(實驗性), 通過開啓這個, 我們可(kě)以讓Opcache把opcode緩存緩存到外部文(wén)件中(zhōng), 對于一些腳本, 會有(yǒu)很(hěn)明顯的性能(néng)提升.

這樣PHP就會在/tmp目錄下Cache一些Opcode的二進制導出文(wén)件, 可(kě)以跨PHP生命周期存在.

        opcache.file_cache=/tmp

三:安(ān)裝(zhuāng)後查看是否生效 

這個方法就多(duō)了,一般你是用(yòng)的cms就有(yǒu)這種顯示的功能(néng),如果沒有(yǒu),建議裝(zhuāng)個PHP探針看一下,如圖就算開啓了。

image.png


上一篇:什麽是HTTPS,使用(yòng)HTTPS可(kě)以保證網站安(ān)全嗎?

下一篇:為(wèi)什麽服務(wù)器會屢遭入侵,如何才能(néng)提高服務(wù)器和網站安(ān)全