开发者

What is a bytecode cache and how can I use one in PHP?

开发者 https://www.devze.com 2023-02-23 17:21 出处:网络
I searched on the Web and came to know that PHP code can be compiled to have performance boost. But how to do it?开发者_JS百科

I searched on the Web and came to know that PHP code can be compiled to have performance boost. But how to do it?开发者_JS百科 Can I compile both procedural and object oriented PHP code?


The basic idea, when executing a PHP script is in two steps :

  • First: the PHP code, written in plain-text, is compiled to opcodes
  • Then: those opcodes are executed.


When you have one PHP script, as long as it is not modified, the opcodes will always be the same ; so, doing the compilation phase each time that script is to be executed is kind of a waste of CPU-time.

To prevent that redundant-compilation, there are some opcode caching mechanism that you can use.

Once the PHP script has been compiled to opcodes, those will be kept in RAM -- and directly used from memory the next time the script is to be executed ; preventing the compilation from being done again and again.


The opcode cache which is used the most is APC - Alternative PHP Cache :

  • See on PECL to download the APC extension
  • And here's its manual

Once APC has been installed and configured properly, there is nothing you have to modify in your PHP code : APC will cache the opcodes, and that is all -- the process is totally invisible for your application.


But how to do it?

Easy.
First of all you have to do some profiling to be sure that code parsing being a bottleneck of your site, and all other obvious ones like unoptimized data storage, slow algorithms, data mining and network calls were optimized.

Easiest way to determine if you need opcode cache or not would be just putting this line at the very top of your most used page

$timer_start = microtime(1);

and this line at the very end:

echo "Generated in ".(round((microtime(1) - $timer_start),4))." sec.";

if time is more than 0.01, you have other things to optimize first, because you will notice no effect from opcode cache.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号