PHP OPcache Tutorial

Udemy Generic 728x90


opcache is a technique that improves PHP performance. opcache stores precompiled script bytecode in shared memory so avoid loading and parsing of php script on each request.


On each request PHP first compiles script and then execute it. Average compilation time of script is about 22.55% of total time . In opcache we save output of compilation in shared memory so on next request there is no need to load and compile the script and request is served by executing cached data. Thus by using opcache we can reduce load time of application by a huge margin.


No external libraries are needed to build this extension.


opcache installation varies depending on underlying PHP version you are using . There are two cases .

A) – PHP 5.5 and later
B) – PHP 5.2 ,5.3 and 5.4

PHP 5.5 and later

In PHP 5.5 and its later version opcache is available by default.If you have disabled the building of default extensions with –disable-all , you must compile PHP with the –enable-opcache option for OPcache to be available.
opcache can only be compiled as a shared extension.

PHP 5.2 ,5.3 and 5.4

In PHP 5.2 , 5.3 and 5.4 opcache extention is not installed by default but opcode functionalities can be achieved by installing PECL extenstion.

Once compiled, you can use the zend_extension configuration directive to load the OPcache extension into PHP. This can be done with zend_extension=/full/path/to/ on non-Windows platforms, and zend_extension=C:\path\to\php_opcache.dll on Windows.

Recommended php.ini setting

  • opcache.memory_consumption=128
  • opcache.interned_strings_buffer=8
  • opcache.max_accelerated_files=4000
  • opcache.revalidate_freq=60
  • opcache.fast_shutdown=1
  • opcache.enable_cli=1


opcache provides few functions . Using these opcache functions we can implement opcache technique -

1) – opcache_compile_file
2) – opcache_get_configuration
3) – opcache_get_status
4) – opcache_invalidate
5) – opcache_reset

This function compiles PHP script and adds it to opcode cache without executing it. This function returns TRUE if file was compiled successfully and FALSE on failure.


boolean opcache_compile_file(string $filepath);
$filepath - path of the file to be cached 


<br />
&lt;?php<br />
    $status = opcache_compile_file('/path_to_file/xyz.php');<br />
?&gt;<br />


This function returns configuration information about the cache instance.


         array opcache_get_configuration(void);


<br />
      &lt;?php<br />
         var_dump(opcache_get_configuration());<br />
      ?&gt;<br />


This function returns status information about cache.


array opcache_get_status ([ boolean $get_scripts = TRUE ] );
$get_scripts - By default it is TRUE if we set it to FALSE cached script information is not included in returned array.


<br />
     &lt;?php<br />
          // This  will return  php script  level and caching  information<br />
         var_dump(opcache_get_status());<br />
     ?&gt;   </p>
<p>    &lt;?php<br />
          // This  will return  only caching  information<br />
          var_dump(opcache_get_status(FALSE));<br />
     ?&gt;<br />


This function invalidates a cached script.


array opcache_invalidate(string $scriptpath [ , boolean $force = FALSE ])

$scriptpath - path of script to be invalidated
$force - if force is unset or FALSE, the script will only be invalidated if the modification time of the script is newer than
the cached opcodes. If set to TRUE, the script will be invalidated regardless of whether invalidation is necessary.


<br />
&lt;?php<br />
   var_dump(opcache_invalidate(‘/path_to_file/xyz.php’);<br />
?&gt;<br />


This function resets contents of the opcode cache. After calling opcache_reset(), all scripts will be reloaded and reparsed the next time they are hit.


boolean opcache_reset ( void )


<br />
&lt;?php<br />
   var_dump(opcache_reset());<br />
 ?&gt;<br />


Udemy Generic 728x90

Spread the word. Share this post!