Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

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

like image 899
Sourav Avatar asked Apr 10 '11 15:04

Sourav


People also ask

What is bytecode cache?

By using a PHP bytecode cache, the output of the PHP compilation is stored in RAM so that the same script doesn't have to be compiled again and again. This reduces the overhead related to executing PHP scripts, resulting in better performance and lower CPU requirements.

What is bytecode in PHP?

The PHP bytecode (opcode) cache is used to store the compiled script bytecode in shared memory so that it can be re-used by PHP engine for subsequent executions of the same script. Support for opcode caching was removed in Wincache 2.0.

What is PHP cache?

A cache is a collection of duplicate data, where the original data is expensive to fetch or compute (usually in terms of access time) relative to the cache. In PHP, caching is used to minimize page generation time.


1 Answers

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.

like image 95
Pascal MARTIN Avatar answered Oct 09 '22 02:10

Pascal MARTIN