Full introduction to improving PHP speed

Source: Internet
Author: User
Tags apc
One of the advantages of PHP is that it is fast. it is enough for general website applications. However, if the site's traffic is high, bandwidth is narrow, or other factors cause a performance bottleneck on the server, you may have to think of other ways to further speed up PHP. This article will introduce how to do this in several ways, so that users can browse PHP quickly. it is enough for general website applications. However, if the site's traffic is high, bandwidth is narrow, or other factors cause a performance bottleneck on the server, you may have to think of other ways to further speed up PHP. This article will introduce how to achieve this in several aspects, so that users can be more comfortable browsing ".

Code Optimization

I don't want to tell you how to write cleaner code again here. I think everyone knows that when speed is needed, you may have done a lot of work on optimizing the PHP source code. here, we propose that this tedious work can be done by other tools. This is Zend Optimizer, which is available for free from Zend Technologies's website (http://www.zend.com. Its principle is very simple. it detects intermediate code generated by the Zend Engine and optimizes it to get a higher execution speed. I think code optimization is a cumbersome task, and the optimized code may become hard to understand, especially when you put down the PHP program for a while, suddenly, when the customer asks you to make some changes, you may not understand it yourself ;-). Therefore, I suggest you use Zend Optimizer to optimize PHP when the source code is complex. the advantage is that it will not make your code complex and difficult to understand.

Installing Zend Optimizer is very simple. Download the relevant pre-compiled libraries based on your platform, and add two lines in your php. ini to restart your web server!

Zend_optimizer.optimization_level = 15
Zend_extension = "/path/to/ZendOptimizer. so"
Zend_loader.enable = Off

You may be a bit strange. isn't it just two rows? how is it changed to three rows. However, the third line is optional. it seems that disabling this zend_loader will speed up optimization, so you may wish to add this line to your php. ini file. Note that zend_loader can be disabled only when you do not use Zend Encoder Runtime. Zend Encoder Runtime is also mentioned below.

Is it faster? Use cache (buffer)

If your PHP application requires a higher speed, the next method is buffering. There are several different ways to achieve this. I have tried Zend Cache (evaluation version), APC, and Afterburner Cache myself.

All of the above are "buffer modules ". They all work in the same way. when the PHP file is requested for the first time, the intermediate code of your PHP source code is stored in the memory of the web server. for the same requests in the future, both provide the "compile" version in the memory. Since it can minimize disk access, this method can indeed greatly improve PHP performance. More conveniently, when your PHP source code is modified, the buffered module can detect these changes and reload them the same, so you don't have to worry that the customer will get an old version of the program. These buffer modules are really good, but which one should I choose? The following sections describe:

Zend Cache is a commercial product of Zend Technologies (it is also a free company that provides us with the PHP engine and Zend Optimizer ). It is really good. After the first run, you can obviously notice that the PHP speed has been greatly improved, and there are more idle resources on the server. The disadvantage is that you have to pay for it, but it is very worthwhile for cost effectiveness.

Afterburner Cache is a free buffer module offered by Bware Technologies (http://bwcache.bware.it. The current version is only a beta version. the work it does seems to be similar to Zend Cache, but the performance improvement is not as good as Zend Cache, and the existing version cannot work with Zend Optimizer, but it is free.

APC (Alternative PHP Cache) is another free module provided by Community Connect (http://apc.communityconnect.com. It works very stably and has a lot of speed improvement. Please note that I have not found an official test data. these are just tests on my application, therefore, we cannot draw a conclusion.
Web content compression (making your customers feel better ")

After the above two methods, I believe that the performance of your PHP application has been greatly improved. now we should consider the download speed from another aspect. If your application is only running in the company, all customers will connect to the server using 100 Mbit/s Ethernet, which may not be a problem, however, if your customers use a slow modem connection, you should consider using the content compression method. According to IETF specifications, most browsers support gzip content compression. This means that you can use gzip to compress the web content before sending it to the client's browser. when receiving the content, the browser automatically decompress the data and allows the user to see the original page. Similarly, there are several different ways to compress the content of a web page.

Mod_gzip is a free Apache module provided by Remote Communications (http://www.phpbuilder.com/columns/www.remotecommunications.com) that compresses static web pages. It works well. you just need to compile it with apache (or use it as a DSO ). Remotecommunications people say it can also compress dynamic content, including mod_php and mod_perl. However, I tried it, but it does not seem to work. I learned from the mod_gzip mailing list that this bug will be fixed in the next version (I think it should be ). However, you can still use it to compress static content.

However, we still want to compress dynamic content, so we must find another method. One way is to use class.gzip encode. php (http://leknor.com/code/), as long as you call this PHP class at the beginning and end of your PHP script, you can compress your page content. If the whole site requires such compression, you can call these functions in auto_prepend and auto_append in your php. ini file. It works well, but on websites with heavy loads, it obviously brings about a little system overhead. To learn more about how it works, take a look at its class code (you must at least add zlib support when compiling PHP ). The instructions provided by the author are also very detailed. you can get anything you need to know.

Recently, I also saw an article about PHP output buffering. PHP4.0.4 introduces a new processing method for output buffering-ob_gzhandler, which functions the same as the class described above, but the difference is that you only need to use it in your php. use the following syntax in ini:

Output_handler = ob_gzhandler;

This will activate the PHP output buffer function and compress everything it sends. For some special reason, if you do not want to set it here, you only need to change the default setting (not compressed) where necessary, as long as you are in the PHP source code directory to be compressed, modify it. the htaccess file is ready. The syntax is as follows:

Php_value output_handler ob_gzhandler

... Or call it directly in your PHP code, the following method:

Ob_start ("ob_gzhandler ");

This output buffering method is good and does not bring additional system overhead to the server. I strongly recommend that you use this method. The change can be illustrated in the following example. if the customer uses a 28.8K modem, after this processing, he will think that suddenly it is changed to an ISDN access. Note that Netscape Communicator does not support image compression, so it cannot be displayed. Therefore, unless all your customers use Internet Explorer, you must disable jpeg and gif image compression. Compression of other files should be fine, but I suggest you test it. In particular, browsers use uncommon plug-ins or browsers that are rarely used.

Other useful things...

Zend Technologies's online store opened in January 24 this year and sells some interesting PHP-related products. Including the Zend Cache and Zend Encoder mentioned above (in short, it is a PHP code compiler that can generate compiled classes so that you can sell them to customers without worrying about leaking source code. On the web servers that need to run these classes, Zend Encoder Runtime will be used for decoding), Zend Ide (an integrated development environment for PHP, with a lot of powerful performance ), it also provides support services for PHP developers.


Using the technology mentioned in this article, you can greatly improve the performance of the site, but pay attention to the following points:

1. the bottleneck may not be in PHP. you need to check every object (such as a database) in the application)
2. the performance of a web server is limited. therefore, do not consider the poor performance as the reason for PHP. it may also be because of a large traffic volume and your server needs to be upgraded, or consider using a server load balancer system (which will cost a lot)
3. do not think that content compression is not important. in a 100 Mbit/s Lan, your PHP application may have good performance, but consider users using slow modem.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.