Home > Article > Backend Development > Learn the essence of PHP and write efficient PHP code performance_PHP Tutorial
1. Use benchmark testing to detect the performance of the code
Benchmarking, when it comes to web applications, often refers to "stress testing," where you load your code with as much traffic as possible and then measure how well it performs.
Two benchmarking tools are recommended: ApacheBench (ab) and JMeter.
To perform a stress test, we need two things: simultaneous online users and a large number of requests. With these tools, many concurrently running application threads represent the user. So we just need to remember: concurrent threads = concurrent users.
1. ApacheBench is super simple, usually included with Apache installation, or as part of the Apache development package - a binary file called a simple ab. To use ab, just specify the total number of requests (-n), and the number of concurrent threads (-c), and let it work.
For example: Here we use -n 1000 -c 20 to generate 20 concurrent threads to execute 1000 requests.
$ ab -n <span>1000</span> -c <span>20</span> http:<span>//</span><span>example.org/</span>
ab usage reference: http://httpd.apache.org/docs/2.0/programs/ab.html
2. JMeter is another Apache project with GUI and has more functions. To use JMeter, you need to create a test plan, add thread groups, add samplers, specify JMeter configuration, add other options such as cookie handlers, and add listeners to process the results.
JMeter website: http://jmeter.apache.org/
2. Use caching to improve code performance
1. For the Apache server, use apc to implement code caching.
Get APC from PECL (PHP Extension Community Library, PHP extension shared class library), compile it, and then install the extension.
$ pecl install apc
After this, depending on the settings, you need to edit the php.ini file and add this:
extension = apc.so
Restart Apache and you should be good to go.
Reference for using apc: http://www.php.net/manual/en/book.apc.php
2. For Windows/IIS servers, use Microsoft's WinCache to implement code caching.
WinCache website: http://www.iis.net/downloads/microsoft/wincache-extension
3. Use memcached to implement session data caching. Memcached is a memory-based, cluster-friendly key/value pair storage. If you enable the memcached extension, you can automatically use memcached instead of disk storage sessions.
memcached website: http://memcached.org/
Memcached usage reference: http://www.php.net/manual/zh/book.memcached.php
Install memcached:
$ pecl install memcache # Install ext/<span>memcache $ memcached </span>-d -m <span>128</span> # Start memcached
Set php.ini:
session.save_handler = <span>'</span><span>memcache</span><span>'</span><span> session.save_path </span>= <span>'</span><span>tcp://localhost:11211</span><span>'</span>
3. Conduct a program summary analysis to find where the problems are?
Profiling is the act of using precise time or memory testing to run each action in your code. Through analysis, find the location of the problem and then optimize it.
We have two commonly used profiling tools:
1. Reliable Xdebug tool written by Derick Rethans, with results reviewed by KCachegrind or QCachegrind.
Xdebug website: http://xdebug.org/
KCachegrind website: http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/
QCachegrind website: http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/
2. The newly developed XHProf tool is an application from Facebook, written by Paul Reinheimer as the XHGui Web front-end part.
XHProf website: http://pecl.php.net/package/xhprof
XHGui website: https://github.com/perftools/xhgui
Summary:
First of all, we need to solve the biggest problem of performance degradation, so that we can achieve better improvement in overall performance. If a SQL query takes 10 seconds and you increase its execution speed by 50%, you have saved yourself 5 seconds; however, if a PHP function takes 5 seconds, you have also increased its execution speed by 50%. %, you actually only save half a second. At some point you will be absolutely limited by the performance of your hardware, and in our experience you are more likely to be limited by disk or network I/O than CPU or RAM. This is when you need to start scaling your application across multiple computers.