ホームページ >バックエンド開発 >PHPチュートリアル >PHP アクセラレーション eAccelerator、Xcache、APC、および Zend Optimizer について
Gao Fatty の本でそのように教えられていたので、以前は Zend Optimizer にしか注目していませんでしたが、見知らぬ会社からの面接で、php アクセラレータ/キャッシュをいくつ知っていますかという質問に遭遇したとき、私が知っているのは 1 つだけだったので唖然としました。 php5.2 .x は Zend Optimizer のみを使用しており、暗号化された PHP プログラムは Zend Optimizer でのみ実行できます。ただし、Zend Optimizer は php5.3.x 以降をサポートできず、ましてや eAccelerator、Xcache、APC もサポートできません。 Zend ガードローダーは php5.3.x 以降と最新の php5.5.x バージョンをサポートしており、公式 Web サイトには Zend ガードが組み込まれているため、phper はアクセラレータを意識する必要はないと記載されています。このような問題に遭遇したので、ネット民はそれを読むだけでよく、テストする必要はありません。
どれをインストールしますか?パフォーマンスにどのような影響がありますか?時間をかけてテストしてみましょう。
他の場所から見た。
プログラム環境が Zend Optimizer を必要としない場合は、pecl-APC が推奨されます (Zend Optimizer と互換性がありません)。
概要:
1. Pecl-APC は、優れた互換性とパフォーマンスを備えた PHP バッファリング (高速化) の第一の選択肢です。
2. PHP 環境で Zend Optimizer が必要な場合は、eAccelerator をインストールし、Zend Optimizer の圧縮レベルを 0 に調整します。
zend オプティマイザーは、PHP コードを調整できるコード最適化モジュールです。実装の原理は、ランタイム コンパイラー (Run-Time Compiler) によって生成されたコードを、最終的に実行される前に最適化することです。コードのパフォーマンスは 40% から 100% 向上する可能性があります。この観点から見ると、強力なキャッシュ機能は必要ありません。ソース コードを読んでいないので、キャッシュがあるかどうか、キャッシュが何であるかはわかりません。品質は。
eAccelerator は、コンパイルされた PHP コードを共有メモリにキャッシュするモジュールです。共有メモリにアクセスすることで、コンパイルされたコードを直接取得して実行できるため、PHPの実行効率が大幅に向上します。同時に、eAccelerator はデータをファイルにキャッシュすることもできます。この部分はファイルに対する操作であるため、ほとんどのファイル キャッシュの原理とパフォーマンスは同様であると思います。
APC は原理的に eAccelerator に似ているため、大きな違いはありません。パラメータを変更して詳細にテストしないと、2 つの利点と欠点はわかりません。それで、一つだけ選んでください。
3 つの無料 PHP アクセラレータ: APC、eAccelerator、XCache の比較
1.PHPアクセラレーターの紹介
PHP アクセラレータは、PHP の実行効率を向上させるために PHP をキャッシュするオペレーティング コードです。これにより、PHP の実行は変換を解析する必要がなく、PHP のオペレーティング コードを直接呼び出すことができるため、速度が向上します。多く。Apache の mod_php を使用したリクエストとレスポンスの実行処理:
1. Apacheがリクエストを受け取ります。
2. Apache はリクエストを mod_php に渡します。
3. mod_php はディスク ファイルを見つけてメモリにロードします。
4. mod_php はソースコードをオペコードツリーにコンパイルします。
5. mod_php はオペコード ツリーを実行します。
PHP アクセラレータは 4 番目のステップに相当します。その目的は、アクセスの多い Web サイトでは、多くのコンパイルの実行速度が遅いため、PHP がリクエストのたびに PHP コードを繰り返しコンパイルすることを防ぐことです。したがって、ここにはボトルネックがあり、PHP のコンパイルを繰り返すと速度とサーバー負荷の両方に影響が出るということです。この問題を解決するために、PHP アクセラレータが誕生しました。
2. PHPアクセラレータのインストールと設定
1. APC をインストールして設定します
APC の正式名称は Alternative PHP Cache で、PHP PECL では拡張機能として使われているようです(ubuntu 環境):
$wget http://pecl .php.net/get/APC-3.0.19.tgz$tar xvzf APC-3.0.19.tgz
$cd APC-3.0.19/APC-3.0.19
$/usr/local /php/bin/ phpize
$./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php-config
$make
$sudo make install
次に、APC を構成します。PECL 拡張パスが変更されたため、コンパイルされたファイルを移動する必要があります:
次に、php.ini ファイルを編集して、php.ini に次のコードを追加します。
extension = so
;
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_ by_default =on
このように、phpinfo()の情報にApacheの再起動が表示されます。
2. eAccelerator をインストールして構成します
実際、eAccelerator の前身は、truk-mmcache です。 truk-mmcache の開発者は Zend に採用されたため、eAccelerator の開発者は、truk-mmcache の機能の一部を継承して、eAccelerator アクセラレータを設計しました。次のようにインストールします:
$wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2
$tar -jxf eaccelerator-0.9.5.tar.bz2
$cd eaccelerator - 0.9.5
$/usr/local/php/bin/phpize
$./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
$make
$ sudo make install
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/PECL
次のコードを php.ini ファイルに追加します
extension = eaccelerator.so
; eAccelerator
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"
eaccelerator。 optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.prune_period = " 0 "
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
キャッシュディレクトリを作成し、Apacheを再起動します
$sudo mkdir /tmp/eaccelerator
$sudo chmod 777 /tmp/eaccelerator
$sudo /usr/local/apache/apachectl restart
phpinfo()でインストールが成功したか確認してください。
3. XCache をインストールして設定する
XCache は中国人によって開発されたもので、初心者の私でも速度とパフォーマンスの点で非常に優れていると誇りに思っています。さっそく味わってみましょう!
$wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
$tar xvzf xcache-1.2.2.tar.gz
$cd xcache-1.2。 2
$/usr/local/php/bin/phpize
$./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/php/php-config
$make
$ sudo make install
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL
php.iniに構成情報を追加します:
拡張子 = xcache.so
;
xcache.size = 24M
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8k
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 8M
xcache.var_count = 1
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protectイオン = オン
xcache .mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
;
xcache.coverager = On
xcache.coveragedump_directory = ""
キャッシュディレクトリを作成し、Apacheを再起動します
$sudo chmod 777 /tmp/xcache
$sudo /usr/local/apache/bin/apachectl restart
phpinfo() 情報を確認してください!
1. テスト環境
ハードウェア: AMD Athlon 64 X2 デュアルコア プロセッサ 4400+ @ 2.2GHz CPU、2GB RAM 160GB SATA ハードドライブ
。
ソフトウェア: Linux UbuntuサーバーGutsy 7.10、Apache 2.2.4、MySQL 5.0.45、およびPHP 5.2.3テストコマンド: ab -c5 -n3000 http://example.com/ (Apache Benchmark (ab) ツールを使用しています。同時接続は 5, 3000 リクエストです)
2. テスト結果
アクセルなし:
ドキュメントパス: /
ドキュメントの長さ: 21757 バイト
同時実行レベル: 5 テストにかかった時間: 288.255212 秒
完了したリクエスト: 3000
失敗したリクエスト: 0
書き込みエラー: 0
合計転送数: 66777000 バイト
転送された HTML : 6527 1000バイト
1 秒あたりのリクエスト数: 10.41 [#/秒] (平均)
リクエストあたりの時間: 480.425 [ms] (平均)
リクエストあたりの時間: 96.085 [ms] (すべての同時リクエストの平均)
転送速度: 226.23 [ kbytes/sec]受信
コネクション時間(ms)
min平均[+/- sd]中央値max
connect:0 0 0.5 019
processing:181 479 186.0 4441822
waiting:166 461 184.7 4271708
total:18 1 479 186.0 444 1822
一定時間内に処理されたリクエストの割合(ms)
50% 444
66% 525
75% 577
80% 619
90% 732
95% 819
98% 946
99 %1 012
100% 1822 (最長リクエスト)
APC アクセラレータ:
ドキュメントパス: /
ドキュメントの長さ: 21757 バイト
同時実行レベル: 5
テストにかかった時間: 98.530068 秒
完了したリクエスト: 3000
失敗したリクエスト: 0
書き込みエラー: 0
合計転送数: 66777000 バイト
転送された HTML: 6527100 0バイト
1 秒あたりのリクエスト数: 30.45 [#/秒] (平均)
リクエストあたりの時間: 164.217 [ms] (平均)
リクエストあたりの時間: 32.843 [ms] (すべての同時リクエストの平均)
転送速度: 661.84 [ Kバイト/秒]受信
接続時間(ミリ秒)
最小平均[+/-SD]中央値最大
接続: 0 0 0.0 0 2
処理中: 58 163 71.2 155 2452
待機中: 53 158 69.6 150 2329
合計: 58 163 71.2 155 2452
一定時間内に処理されたリクエストの割合(ミリ秒)
50% 155
66% 178
75% 193
80% 204
90% 235
95% 258
98% 285
99% 3 02
100% 2452 (最長リクエスト)
eAccelerator加速器:
ドキュメントパス:/
ドキュメントの長さ:21757バイト
同時実行レベル:5
テストにかかった時間:95.983986秒
完了したリクエスト:3000
失敗したリクエスト:0
書き込みエラー:0
合計転送数:66777000バイト
転送されたHTML:6527100 0バイト
1 秒あたりのリクエスト数: 31.26 [#/秒] (平均)
リクエストあたりの時間: 159.973 [ms] (平均)
リクエストあたりの時間: 31.995 [ms] (すべての同時リクエストの平均)
転送速度: 679.39 [ Kバイト/秒]受信
接続時間(ミリ秒)
最小平均[+/-SD]中央値最大
接続: 0 0 0.1 0 3
処理中: 57 159 91.3 148 3830
待機中: 50 152 89.8 142 3704
合計: 57 159 91.3 148 3830
一定時間内に処理されたリクエストの割合(ミリ秒)
50% 148
66% 174
75% 193
80% 205
90% 239
95% 263
98% 289
99% 3 09
100% 3830 (最長リクエスト)
XCache加速器:
document Path: /DocumentLength:21757 Bytesconcurrencyレベル:テストのために撮影される5秒:99.76300秒incompleteリクエスト:3000sfailedリクエスト:0
writeエラー:0 attotal転送:667777000bytes
html転送:65271000バイト
1 秒あたりのリクエスト数: 30.28 [#/秒] (平均)
リクエストあたりの時間: 165.127 [ms] (平均)
リクエストあたりの時間: 33.025 [ms] (すべての同時リクエストの平均)
転送速度: 658.19 [ Kバイト/秒]受信
接続時間(ミリ秒)
最小平均[+/-SD]中央値最大
接続: 0 0 0.0 0 2
処理中: 59 164 83.4 155 3367
待機中: 52 156 66.4 148 1802
合計: 59 164 83.4 155 3367
一定時間内に処理されたリクエストの割合(ミリ秒)
50% 155
66% 178
75% 196
80% 206
90% 237
95% 263
98% 287
99% 3 05
100% 3367 (最長リクエスト)
3、結果摘要
要求時間(秒)
最大内存占用(MB) | 最小内部保存占用(MB) | なし | 10.41 | |
24 | 24 | APC | 30.45 | |
21 | 21 | eアクセラレータ | 31.26 | |
23 | 18 | Xキャッシュ | 30.28 | |
29 | 19 | 四、PHP加速器比较結果总结 | 1、要求時間と内部占有の観点から eAccelerator を取得することが最適です。 |
翻訳链接地址:http://www.vpser.net/opt/apc-eaccelerator-xcache.html
以上、PHP の高速化 eAccelerator、Xcache、APC、および Zend Optimizer に関する内容を紹介しましたが、PHP 教則に関心のある友人の助けになることを望みます。