ホームページ >バックエンド開発 >PHPチュートリアル >Zend Opcache で PHP を高速化する

Zend Opcache で PHP を高速化する

WBOY
WBOYオリジナル
2016-06-13 12:28:31811ブラウズ

Zend Opcache を使用して PHP を高速化する

Optimizer は、Zend によって開発された、クローズドソースですが無料で使用できる PHP 最適化高速化コンポーネントです。これは、最初で最速のオペコード キャッシュ ツールです。現在、Zend Technologies は、PHP ライセンスに基づいてオプティマイザーを Zend Opcache としてオープンソース化しています。

Zend OPcache は、オペコードのキャッシュと最適化を通じて、より高速な PHP 実行を提供します。プリコンパイルされたスクリプト ファイルは後で使用できるように共有メモリに保存されるため、ディスクからコードを読み取ってコンパイルする時間の消費が回避されます。同時に、コードの実行を高速化するためにいくつかのコード最適化モードも適用します。

1. オペコードキャッシュとは何ですか?

インタプリタはスクリプト コードの分析を完了すると、直接実行できる中間コードを生成します。このコードはオペレーション コード (オペレーション コード、オペコード) とも呼ばれます。オペコード キャッシュの目的は、コンパイルの繰り返しを回避し、CPU とメモリのオーバーヘッドを削減することです。動的コンテンツのパフォーマンスのボトルネックが CPU やメモリではなく、データベース クエリによって引き起こされるディスク I/O オーバーヘッドなどの I/O 操作にある場合、オペコード キャッシュのパフォーマンス向上は非常に限られます。しかし、オペコード キャッシュは CPU とメモリのオーバーヘッドを削減できるので、これは常に良いことです。環境に優しい方法で、消費量は可能な限り削減されるべきですよね。 :D

最新のオペコード キャッシュ (オプティマイザー、APC2.0、その他) はストレージに共有メモリを使用し、実行前にコードを「逆シリアル化」することなく、そこからファイルを直接実行できます。これにより、パフォーマンスが大幅に向上し、多くの場合、全体的なサーバーのメモリ消費量が減少し、欠点はほとんどありません。

2. Optimizer と APC の長所と短所の比較

Optimizer は、2013 年 3 月中旬に Opcache に名前変更されました。

PHP wiki の議論によると、Zend Opcache は php 5.5 に統合される予定です。 APC の競合相手として、新しい Zend Opcache が APC の地位に代わる可能性がありますが、OptimizerPlus には APC のようなユーザー キャッシュ機能はありません。

APC に対する OPTIMIZER の利点

  1. パフォーマンス。テストによると、Zend Optimizer は一貫して APC を上回っています。コードに応じて、1 秒あたりに処理されるリクエストの数は 5 ~ 20% 増加します。 Google ドキュメントに記録されたテスト結果のうち、WordPress 2.1.1 (新しいバージョンの WP でテストしなかった理由はわかりません) のパフォーマンスは約 8% 向上しました。理論的には、WP 3.5.1 ではパフォーマンスが約 5 ~ 10% 向上するはずです。 WordPress を実行しているサーバーの場合、オプティマイザーを使用すると、CPU 使用率が大幅に削減され、ページの読み込み速度が向上します (グラフィックはこちら)。
  2. 新しい PHP バージョンをサポートします。 Zend と PHP コミュニティは、Optimizer が最新バージョンの PHP をサポートするのを支援します。
  3. 信頼性。オプティマイザーには、データ破損によるサーバーのクラッシュを防ぐオプションの破損検出機能があります。
  4. 互換性が向上しました。 PHP コミュニティは、オプティマイザーがコミュニティでサポートされているすべてのバージョンの PHP と互換性を持つことを目指しています。

OPTIMIZER に対する APC の利点

  1. APC にはデータ キャッシュ API がありますが、オプティマイザーにはありません。
  2. APC は、古い無効なスクリプトによって占有されていたメモリを再利用できます。 APC には、使用されなくなったスクリプトに関連付けられたメモリを再利用できるメモリ マネージャーがあります。オプティマイザーは異なり、そのようなメモリを「ダーティ」としてマークしますが、再利用はしません。 「ダーティ」メモリ使用率が特定のしきい値に達すると、オプティマイザーは自動的に再起動します。この動作には、安定性の点で長所と短所の両方があります。

3. Zend Opcode の使用

PHP 最適化加速ツールとして APC の代わりに Zend Opcache を使用できるようになりました。現在の Zend オペコードは、PHP 5.2.*、5.3.*、5.4.*、および PHP-5.5 開発バージョンと互換性があります。ただし、PHP 5.2 のサポートは将来的に削除される予定です。

: Zend Opcache は eaccelerator と競合します。 Zend Opcache をインストールするには、最初に eaccelerator をアンインストールする必要がある場合があります (このアクセラレータ モジュールを使用している場合)。

ソース コードからインストールして構成する

Zend Opcache のソース コードは github でホストされており、現在は ZendOptimizerPlus と呼ばれています。

詳しいインストール手順については、README ファイルを参照してください。

注:

  1. 独自のサーバーにデプロイする前に、ローカル仮想マシンでテストすることをお勧めします。
  2. 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 也不是什么坏事。

操作步骤:

  1. 配置使用 epel 安装源。已有则跳过。
  2. 删除 eaccelerator、xcache、apc:
    yum remove php-eaccelerator php-xcache php-apcu

    没有使用则跳过。

  3. 对系统执行升级:
    yum update

    目的是根据 remi 安装源的状态升级当前的 php 等软件到 remi 支持的最新版本。此时,可以看到系统有类似下面的输出:

    Updating   : php-common-5.4.14-1.el6.remi.i686                                                         1/26WARNING : These php-* RPM are not official Fedora / Red Hat build andoverrides the official ones. Don't file bugs on Fedora Project nor Red Hat.Use dedicated forums http://forums.famillecollet.com/warning: /etc/php.ini created as /etc/php.ini.rpmnew  Updating   : mysql-libs-5.5.31-1.el6.remi.i686                                                         2/26WARNING : This MySQL RPM is not an official Fedora / Red Hat build and itoverrides 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 寻求帮助了。呵呵,貌似出问题都是在网上找,还真是很少到官方论坛里提问。像我这样的入门级用户,也不会遇到那么深度的问题。

  4. 安装 Zend Opcache(pecl 版本):
    yum install php-pecl-zendopcache

    安装时产生的 opcache 的配置文件位于默认的 /etc/php.d 目录中:

    opcache-default.blacklistopcache.ini

    这个配置文件采用的基本就是 README 中的推荐设置,只有几个地方需要修改。

    vi /etc/php.d/opcache.ini

    对照如下推荐配置修改并保存即可(可参考完整的 Zend Opcache 配置信息):

    opcache.memory_consumption=128opcache.interned_strings_buffer=8opcache.max_accelerated_files=4000opcache.revalidate_freq=60opcache.fast_shutdown=1opcache.enable_cli=1
  5. 不需要修改 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 GroupZend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies    with Zend OPcache v7.0.1, Copyright (c) 1999-2013, by Zend Technologies<br><br><br><span style="font-size: 16px;"><strong><span style="font-size: 14px;">原文转载于:http://cnzhx.net/blog/zendopcache-accelerate-php</span></strong>/ 感谢原著</span>

 

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。