Home  >  Article  >  Backend Development  >  About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer

About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer

WBOY
WBOYOriginal
2016-08-08 09:30:551084browse

I only paid attention to Zend Optimizer before, because Gao Fatty’s book taught it this way, but when I encountered an interview question from a strange company asking how many php accelerators/caches do you know, I was stunned because the only one I knew was php5.2. .x has only used Zend Optimizer, and encrypted php programs can only run under Zend Optimizer. However, Zend Optimizer cannot support php5.3.x or above, let alone eAccelerator, Xcache, and APC. Zend guard loader can support php5.3.x or above, and the latest php5.5.x version, the official website says that Zend guard is built-in, so phper should not pay attention to the accelerator. Since I encountered such a problem, I also summarized things from the Internet. Netizens only need to read it, and there is no need to test it.

Which one to install? What impact will it have on performance? Have time to test it out.

Viewed from elsewhere.

If the program environment does not require Zend Optimizer, pecl-APC is preferred (it is not compatible with Zend Optimizer).
Summary:
1. Pecl-APC is the first choice for PHP buffering (acceleration), with excellent compatibility and performance.
2. If your PHP environment requires Zend Optimizer, install eAccelerator and adjust the compression level of Zend Optimizer to 0.

zend optimizer is a code optimization module that can tune PHP code. The principle of implementation is to optimize the code generated by the run-time compiler (Run-Time Compiler) before being finally executed. Code performance can be improved by 40% to 100%. From this point of view, it should not have a strong caching function. I have not read the source code, so I don’t know whether there is a cache and what the cache quality is.
eAccelerator is a module that caches compiled PHP code in shared memory. By accessing shared memory, the compiled code can be obtained and executed directly to improve efficiency. This greatly improves the execution efficiency of PHP. At the same time, eAccelerator can also cache data into files. Since this part is an operation on files, I think that for most file caches, the principles are similar and the performance is similar.
APC is similar to eAccelerator in principle, so there is not much difference. Without detailed testing by modifying the parameters, the advantages and disadvantages of the two cannot be seen. So just pick one.

Comparison of three free PHP accelerators: APC, eAccelerator and XCache

1. Introduction to PHP accelerator

是 PHP accelerator is an operating code that caches the PHP to improve the efficiency of PHP execution. In this way, the PHP execution does not need to analyze the conversion. You can directly call the PHP operating code, so that the speed has improved a lot.

   Request and response execution process using mod_php in Apache:

 1. Apache receives the request.

2. Apache passes the request to mod_php.
3. mod_php locates the disk file and loads it into memory.
4. mod_php compiles the source code into an opcode tree.
5. mod_php executes the opcode tree.
相 The PHP accelerator corresponds to the fourth step. Its purpose is to prevent PHP from repeatedly compiling the PHP code every request, because a large number of compilations often have no fast execution speed on a high -access website? So there is a bottleneck here, which is that repeated compilation of PHP affects both speed and server load. In order to solve this problem, the PHP accelerator was born.

2. PHP accelerator installation and configuration

1. Install and configure APC

The full name of APC is Alternative PHP Cache. The official translation is called "Optional PHP Cache". It is an extension in PHP PECL. It seems that Facebook is using it. Start the installation below (ubuntu environment):

$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

Next we configure APC. Because my PECL extension path has changed, I have to move the compiled files:

$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts -20060613/apc.so /usr/local/php/lib/php/extensions/PECL


Then we edit the php.ini file for configuration. Please add the following code to php.ini:

extension_dir = "/usr/local/php/lib/php/extensions/PECL"

extension = apc. so
; APC
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

 In this way, restarting apache will be displayed in the phpinfo() information.

2. Install and configure eAccelerator

           The predecessor of eAccelerator is actually truck-mmcache. Because the person who developed truk-mmcache was recruited by Zend, the person who developed eAccelerator inherited some features of truk-mmcache and designed the eAccelerator accelerator. Install as follows:
$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

Add the following code to the php.ini file
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"

Create cache directory and restart apache

$sudo mkdir /tmp/eaccelerator
$sudo chmod 777 /tmp/eaccelerator
$sudo /usr/local/apache/apachectl restart

Check whether the installation is successful in phpinfo().

3. Install and configure XCache

XCache is something developed by Chinese people. Even as a newbie, I am proud of it. XCache is also very good in terms of speed and performance. Let’s taste it now!

$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

Add configuration information in php.ini:

extension = 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_slots = 8k

xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protect ion = On
xcache .mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
;
xcache.coverager = On
xcache.coveragedump_directory = ""

Create cache directory and restart apache

$sudo mkdir /tmp/xcache

$sudo chmod 777 /tmp/xcache

$sudo /usr/local/apache/bin/apachectl restart


Go and check phpinfo() information!

3. PHP accelerator test

1. Test environment

Hardware: AMD Athlon 64 X2 Dual Core Processor 4400+ @ 2.2GHz CPU, 2GB RAM. 160GB SATA hard drive

Software: Linux Ubuntu server Gutsy 7.10, Apache 2.2.4, MySQL 5.0.45 and PHP 5.2.3

Test command: ab -c5 -n3000 http://example.com/ (We are using the Apache Benchmark (ab) tool, the concurrent connection is 5, 3000 requests)

2. Test results

No accelerator:

Document Path: /

Document Length: 21757 bytes

Concurrency Level: 5

Time taken for tests: 288.255212 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred :65271000 bytes
Requests per second: 10.41 [#/sec] (mean)
Time per request: 480.425 [ms] (mean)
Time per request: 96.085 [ms] (mean, across all concurrent requests)
Transfer rate: 226.23 [ Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.5 0 19
Processing: 181 479 186.0 444 1822
Waiting: 166 461 184.7 427 1708
Total: 18 1 479 186.0 444 1822
Percentage of the requests served within a certain time (ms)
50% 444
66% 525
75% 577
80% 619
90% 732
95% 819
98% 946
99% 1 012
100% 1822 (longest request)

APC Accelerator:

Document Path: /
Document Length: 21757 bytes
Concurrency Level: 5
Time taken for tests: 98.530068 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred: 65271000 bytes
Requests per second: 30.45 [#/sec] (mean)
Time per request: 164.217 [ms] (mean)
Time per request: 32.843 [ms] (mean, across all concurrent requests)
Transfer rate: 661.84 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 2
Processing: 58 163 71.2 155 2452
Waiting: 53 158 69.6 150 2329
Total: 58 163 71.2 155 2452
Percentage of the requests served within a certain time (ms)
50% 155
66% 178
75% 193
80% 204
90% 235
95% 258
98% 285
99% 302
100% 2452 (longest request)

eAccelerator加速器:

Document Path: /
Document Length: 21757 bytes
Concurrency Level: 5
Time taken for tests: 95.983986 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred: 65271000 bytes
Requests per second: 31.26 [#/sec] (mean)
Time per request: 159.973 [ms] (mean)
Time per request: 31.995 [ms] (mean, across all concurrent requests)
Transfer rate: 679.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 3
Processing: 57 159 91.3 148 3830
Waiting: 50 152 89.8 142 3704
Total: 57 159 91.3 148 3830
Percentage of the requests served within a certain time (ms)
50% 148
66% 174
75% 193
80% 205
90% 239
95% 263
98% 289
99% 309
100% 3830 (longest request)

XCache加速器:

Document Path: /
Document Length: 21757 bytes
Concurrency Level: 5
Time taken for tests: 99.76300 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred: 65271000 bytes
Requests per second: 30.28 [#/sec] (mean)
Time per request: 165.127 [ms] (mean)
Time per request: 33.025 [ms] (mean, across all concurrent requests)
Transfer rate: 658.19 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 2
Processing: 59 164 83.4 155 3367
Waiting: 52 156 66.4 148 1802
Total: 59 164 83.4 155 3367
Percentage of the requests served within a certain time (ms)
50% 155
66% 178
75% 196
80% 206
90% 237
95% 263
98% 287
99% 305
100% 3367 (longest request)

3、结果摘要

  请求时间(秒) 单次请求时间(毫秒) 最大内存占用(MB) 最小内存占用(MB)
None 10.41 96.08 24 24
APC 30.45 32.84 21 21
eAccelerator 31.26 31.99 23 18
XCache 30.28 33.02 29 19

四、PHP加速器比较结果总结

     1、通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的。

     2、通过测试得出使用加速器比无加速器在请求时间快了3倍左右。

     3、通过各个官方观察,XCache是更新最快的,这也说明最有发展的。

        以上是总结结果,你也许会问我到底用那个加速器好呢?我只能告诉你,首先,用一定比不用好,其次每个加速器还有一些可以调优的参数,所以要根据你的系统环 境而定,然后,我个人觉得你可以详细研究下eAccelerator和XCache,这两款潜力还是很大的,最后我从比较专业的测试网站搞了一张结果图:

原文链接地址:http://www.vpser.net/opt/apc-eaccelerator-xcache.html

以上就介绍了关于PHP加速eAccelerator、Xcache、APC和Zend Optimizer,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn