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

Sourav picture Sourav · Apr 10, 2011 · Viewed 11.5k times · Source

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?

Answer

Pascal MARTIN picture Pascal MARTIN · Apr 10, 2011

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 :

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.