Home >Backend Development >PHP Tutorial >About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial
Viewed from elsewhere.
When 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 About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial and what the About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial quality is.
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 a tool that About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorials PHP opcodes to improve PHP execution efficiency, so that PHP does not need to be parsed and converted later when executed. PHP opcodes can be directly called, which improves the speed a lot.
The 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 PHP code for every request, because on high-traffic websites, a large number of compilations are often not executed as fast? 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 file:
$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"
; 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.About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial_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-mmAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial. Because the person who developed truk-mmAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial was recruited by Zend, the person who developed eAccelerator inherited some features of truk-mmAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial 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.About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial_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 About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial 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. Moreover, XCache does a good job in terms of speed and performance. Let’s taste it now!
$wget http://xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.lighttpd.net/pub/Releases/1.2.2/xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial-1.2.2.tar.gz
$tar xvzf xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial-1.2.2.tar.gz
$cd xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial-1.2.2
$/usr/local/php/bin/phpize
$./configure –enable-xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial –enable-xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial-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/xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.so / usr/local/php/lib/php/extensions/PECL
Add configuration information in php.ini:
extension = xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.so
; xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.admin.user = "admin"
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.admin.pass = "(execute) echo '(your password)'|md5sum( ciphertext)"
;
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.size = 24M
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.shm_scheme = "mmap"
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.count = 2
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.slots = 8k
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.ttl = 0
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.gc_interval = 0
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.var_size = 8M
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.var_count = 1
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.var_slots = 8k
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.var_ttl = 0
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.var_maxttl = 0
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.var_gc_interval = 300
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.test = Off
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.readonly_protection = On
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.mmap_path = "/tmp/xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial"
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.coredump_directory = ""
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorialr = On
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.stat = On
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.optimizer = Off
;
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.coverager = On
xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.coveragedump_directory = ""
Create About PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial directory and restart apache
$sudo mkdir /tmp/xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial
$sudo chmod 777 /tmp/xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial
$sudo /usr/local/apache/bin/apachectl restart
Go and check the 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: 181 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% 1012
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 |
4. Summary of PHP accelerator comparison results
1. Through testing, it is concluded that eAccelerator is the best in terms of request time and memory usage.
2. Through testing, it is concluded that the request time is about 3 times faster using the accelerator than without the accelerator.
3. According to various official observations, XCache is the fastest updated, which also shows that it has the most development.
The above is the summary result. You may ask me which accelerator is better? I can only tell you that first of all, it is better to use it than not to use it. Secondly, each accelerator has some parameters that can be tuned, so it depends on your system environment. Then, I personally think you can study eAccelerator and XCache in detail. , these two models still have great potential. Finally, I made a result picture from a more professional testing website:
Original link address: http://www.vpser.net/opt/apc-eaccelerator-xAbout PHP acceleration eAccelerator, Xcache, APC and Zend Optimizer, eacceleratorxcache_PHP tutorial.html