首頁 > 後端開發 > php教程 > 使用ZendOpcache加速PHP

使用ZendOpcache加速PHP

黄舟
發布: 2023-03-03 14:18:02
原創
1230 人瀏覽過

Optimizer+ 是 Zend 開發的閉源但可以免費使用的 php 優化加速元件,是第一個也是最快的 opcode 快取工具。現在,Zend 科技公司將 Optimizer+ 在 PHP License 下開源成為 Zend Opcache。

Zend OPcache 透過 opcode 快取和最佳化提供更快的 PHP 執行過程。它將預先編譯的腳本檔案儲存在共享記憶體中以供以後使用,從而避免了從磁碟讀取程式碼並進行編譯的時間消耗。同時,它也應用了一些程式碼最佳化模式,使得程式碼執行更快。

1. 什麼是 opcode 快取?

當解釋器完成對腳本代碼的分析後,便將它們產生可以直接運行的中間代碼,也稱為操作碼(Operate Code,opcode)。 Opcode cache 的目地是避免重複編譯,減少 CPU 和記憶體開銷。如果動態內容的效能瓶頸不在於 CPU 和內存,而在於 I/O 操作,例如資料庫查詢帶來的磁碟 I/O 開銷,那麼 opcode cache 的效能提升是非常有限的。但既然 opcode cache 能帶來 CPU 和記憶體開銷的降低,這總歸是好事 —— 本著環保的態度,也應該盡量減少消耗不是? :D

現代操作碼快取器(Optimizer+,APC2.0+,其他)使用共享記憶體進行存儲,並且可以直接從中執行文件,而不用在執行前「反序列化」程式碼。這將帶來顯著的效能加速,通常降低了整體伺服器的記憶體消耗,而且很少有缺點。

2. Optimizer+ 與 APC 的優缺點對比

Optimizer+ 於 2013年3月中旬改名為 Opcache。

根據 PHP wiki 上的討論,Zend Opcache 即將整合到 php 5.5 中。作為 APC 的競爭對手,新生的 Zend Opcache 很有可能取代 APC 的位置,雖然 OptimizerPlus 沒有像 APC 那樣的 user cache 功能。

OPTIMIZER+ 相對 APC 的優點

性能。根據測試,Zend Optimizer+ 始終優於 APC。隨代碼差異,每秒鐘處理的請求數高 5~20%。 Google doc 上記錄的測試結果中,WordPRess 2.1.1(不知道為什麼不使用一個新版本的 WP 來測試),效能提高約 8%。理論上來說,對於 WP 3.5.1,效能應該也能得到大約 5~10% 的提升吧。對於執行 WordPress 的伺服器而言,使用 Optimizer+ 可以顯著降低 CPU 使用率並提高頁面載入速度(graphics here)。

支援新的 PHP 版本。 Zend 和 PHP 社群都會幫助 Optimizer+ 能夠支援最新版本的 PHP。

可靠性。 Optimizer+ 擁有可選的損壞偵測能力,可防止因資料損壞而導致的伺服器崩潰。

更好的相容性。 PHP 社群打算讓 Optimizer+ 與社群支援的所有 PHP 版本相容。

APC 相對 OPTIMIZER+ 的優勢

APC 有資料快取 API,而 Optimizer+ 沒有。

APC 能夠回收舊的無效的腳本所佔用的記憶體。 APC 有記憶體管理器,可以將那些不再使用的腳本關聯的記憶體回收。而 Optimizer+ 不同,它將這樣的記憶體標記為“髒的”,但不會回收它們。一旦「髒的」記憶體佔用配置閾值的百分比達到一定值,Optimizer+ 就會自己重新啟動。這種行為在穩定性上既有優勢也有劣勢。

3. 使用 Zend Opcode

現在已經可以使用 Zend Opcache 取代 APC 作為 PHP 最佳化加速工具了。目前的 Zend Opcode 相容於 PHP 5.2.*、5.3.*、5.4.* 和 PHP-5.5 開發版。不過,將來會取消對 PHP 5.2 的支援。

注意:Zend Opcache 與 eaccelerator 相衝突。要安裝 Zend Opcache,可能需要先卸載 eaccelerator —— 如果你用了這個加速模組的話。

從原始碼安裝並設定

Zend Opcache 的原始碼託管在 github 上,目前還是叫做 ZendOptimizerPlus。

安裝步驟詳見其 README 文件。

注意:

最好在本地虛擬機裡測試之後再部署到自己的伺服器上;

安裝前最好先刪除 eacceleratro、xcache 或 apc 等元件。

順便說一句,從原始碼編譯安裝時需要使用到 php-devel。 README 中快速安裝一節的開頭就用到,

$PHP_DIR/bin/phpize

如果不清楚 phpize 的路徑,可以,

whereis phpize

README 文件中也有相應的優化設定。

從 EPEL 來源安裝並配置

我不喜歡從原始碼編譯安裝程序,一個是水平有限,一個就是怕麻煩。以下介紹從 EPEL 安裝來源安裝 Zend Opcache,以 CentOS 上的操作為例,基於我的 VPS 的設定。

EPEL 社區已經提供了 Zend Opcache 的安裝包,可以直接 yum 安裝。當然,前提是已經設定使用了 EPEL 的安裝來源。如果沒有,可以參考這裡。

提醒一下,REMI 安裝來源上的 PHP 已經是 5.4 版本了。鑑於有人測試說 WordPress 在 PHP 5.4 上的表現要優於在 PHP 5.3 上的表現(10% faster and lower ram consuming),所以順便升級 PHP 也不是壞事。

操作步驟:

配置使用 epel 安裝來源。已有則跳過。

刪除 eaccelerator、xcache、apc:

yum remove php-eaccelerator php-xcache php-apcu

沒有使用則跳過。

對系統執行升級:

yum update

目的是根據 remi 安裝來源的狀態升級當前的 php 等軟體到 remi 支援的最新版本。此時,可以看到系統有類似下面的輸出:

Updating   : php-common-5.4.14-1.el6.remi.i686                           1/26

WARNING : These php-* RPM are not official Fedora / Red Hat build and
overrides the official ones. Don't file bugs on Fedora Project nor Red Hat.

Use dedicated forums http://forums.famillecollet.com/

warning: /etc/php.ini /etc/php。 /php.ini.rpmnew
 Updating   : MySQL-libs-5.5.31-1.el6.remi.i686                        2/26

WARNING : This MySQL RPM is not an official Fedora / Red Hat build and it
overrides the official one . Don't file bugs on Fedora Project nor Red Hat.
Use dedicated forums http://forums.famillecollet.com/

warning: /etc/my.cnf created as /etc/my.cnf.rpmnew

表示我們現在要從Fedora / Red Hat 的版本遷移到Remi 版本了,所以不要去Fedora / Red Hat 尋求幫助了。呵呵,貌似出問題都是在網路上找,還真是很少到官方論壇問問題。像我這樣的入門用戶,也不會遇到那麼深度的問題。

安裝Zend Opcache(pecl 版本):

yum install php-pecl-zendopcache

安裝時產生的opcache 的設定檔位於預設的 /etc/php.d 目錄中:list中產生的opcache 的設定檔位於預設的 /etc/php.d 目錄中:list opcache.ini


這個設定檔採用的基本就是README 中的建議設置,只有幾個地方需要修改。

vi /etc/php.d/opcache.ini

對照如下建議配置修改並儲存即可(可參考完整的Zend Opcache 設定資訊):

opcache.memory_consumption=128883838分opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

opcache.fast_shutdown=1

opcache.enable_cli=1


不需要修改php.ini 配置,重起Apache 服務使之生效:

service httpd restart

查詢一下看看是否正確啟動了:

php -v

輸出結果類似於:

PHP 5.4.14 (cli) (built: Apr 11 2013 11:04:35) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies    with Zend OPcache v7.0.1, Copyright (c) 1999-2013, by Zend Technologies

以上就是使用ZendOpcache加速PHP的內容,更多相關文章請關注PHPcn網(m.sbmmt.com)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板