آموزش نصب Zend OpCache در دایرکت ادمین
نحوه کارکرد opcache در عکس زیر قابل مشاهده است
1 2 3 4 5 6 7 8 | <span class="com"># Install "pecl" via php-pear</span><span class="pln"> $ sudo apt</span><span class="pun">-</span><span class="kwd">get</span><span class="pln"> install </span><span class="pun">-</span><span class="pln">y php</span><span class="pun">-</span><span class="pln">pear </span><span class="com"># Install build dependencies</span><span class="pln"> $ sudo apt</span><span class="pun">-</span><span class="kwd">get</span><span class="pln"> install </span><span class="pun">-</span><span class="pln">y build</span><span class="pun">-</span><span class="pln">essential php5</span><span class="pun">-</span><span class="pln">dev </span><span class="com"># Install Zend OpCache</span><span class="pln"> $ sudo pecl install zendopcache</span><span class="pun">-</span><span class="lit">7.0</span><span class="pun">.</span><span class="lit">2</span> |
Configure
Now that it’s installed, we need to set up its configuration. Ubuntu (and Debian?) has a convention to put all conf files in /etc/php5/conf.d
, which are symlinked from /etc/php5/mods-available
. Here’s how to set that up:
First, find the location of opcache.so:
1 2 | <span class="pln">$ sudo find </span><span class="pun">/</span> <span class="pun">-</span><span class="pln">name </span><span class="str">'opcache.so'</span> <span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">php5</span><span class="pun">/</span><span class="lit">20100525</span><span class="pun">/</span><span class="pln">opcache</span><span class="pun">.</span><span class="pln">so </span><span class="com"># On my server with php 5.4</span> |
Once you have the location, you can add that to the conf file for opcache:
1 2 3 4 5 6 7 8 9 10 11 | <span class="com"># Create & edit the following files:</span><span class="pln"> $ sudo vim </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">php5</span><span class="pun">/</span><span class="pln">mods</span><span class="pun">-</span><span class="pln">available</span><span class="pun">/</span><span class="pln">opcache</span><span class="pun">.</span><span class="pln">ini </span><span class="com"># Add the following to opcache.ini</span><span class="pln"> zend_extension</span><span class="pun">=</span><span class="str">/usr/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">php5</span><span class="pun">/</span><span class="lit">20100525</span><span class="pun">/</span><span class="pln">opcache</span><span class="pun">.</span><span class="pln">so </span><span class="com"># File path from above</span><span class="pln"> opcache</span><span class="pun">.</span><span class="pln">memory_consumption</span><span class="pun">=</span><span class="lit">128</span><span class="pln"> opcache</span><span class="pun">.</span><span class="pln">interned_strings_buffer</span><span class="pun">=</span><span class="lit">8</span><span class="pln"> opcache</span><span class="pun">.</span><span class="pln">max_accelerated_files</span><span class="pun">=</span><span class="lit">4000</span><span class="pln"> opcache</span><span class="pun">.</span><span class="pln">revalidate_freq</span><span class="pun">=</span><span class="lit">60</span><span class="pln"> opcache</span><span class="pun">.</span><span class="pln">fast_shutdown</span><span class="pun">=</span><span class="lit">1</span><span class="pln"> opcache</span><span class="pun">.</span><span class="pln">enable_cli</span><span class="pun">=</span><span class="lit">1</span> |
In case your application (or the framework it is built on) only uses annotations at development time, you can achieve even better performance by adding
opcache.save_comments=0
in your PHP configuration file as well.
Now that the INI file is created, symlink it to its proper place:
1 | <span class="pln">$ sudo ln </span><span class="pun">-</span><span class="pln">s </span><span class="pun">../</span><span class="pln">mods</span><span class="pun">-</span><span class="pln">available</span><span class="pun">/</span><span class="pln">opcache</span><span class="pun">.</span><span class="pln">ini </span><span class="lit">20</span><span class="pun">-</span><span class="pln">opcache</span><span class="pun">.</span><span class="pln">ini</span> |
Lastly, I happen to be running php5-fpm
with Nginx, so I need to restart the PHP service for the changes to take effect:
1 2 | <span class="pln">$ sudo service php5</span><span class="pun">-</span><span class="pln">fpm restart </span><span class="com"># Alternatively: /etc/init.d/php5-fpm restart</span> |
If you’re running PHP in Apache, just give that a restart:
1 2 | <span class="pln">$ sudo service apache2 restart </span><span class="com"># Alternatively: /etc/init.d/apache2 restart</span> |
Confirm Installed
To confirm it’s installed, run php -v
, and you should get some information about Zend OpCache being installed:
1 2 3 4 5 | <span class="pln">$ php </span><span class="pun">-</span><span class="pln">v PHP </span><span class="lit">5.4</span><span class="pun">.</span><span class="lit">17RC1</span> <span class="pun">(</span><span class="pln">cli</span><span class="pun">)</span> <span class="pun">(</span><span class="pln">built</span><span class="pun">:</span> <span class="typ">Jun</span> <span class="lit">22</span> <span class="lit">2013</span> <span class="lit">19</span><span class="pun">:</span><span class="lit">27</span><span class="pun">:</span><span class="lit">26</span><span class="pun">)</span> <span class="typ">Copyright</span> <span class="pun">(</span><span class="pln">c</span><span class="pun">)</span> <span class="lit">1997</span><span class="pun">-</span><span class="lit">2013</span> <span class="typ">The</span><span class="pln"> PHP </span><span class="typ">Group</span> <span class="typ">Zend</span> <span class="typ">Engine</span><span class="pln"> v2</span><span class="pun">.</span><span class="lit">4.0</span><span class="pun">,</span> <span class="typ">Copyright</span> <span class="pun">(</span><span class="pln">c</span><span class="pun">)</span> <span class="lit">1998</span><span class="pun">-</span><span class="lit">2013</span> <span class="typ">Zend</span> <span class="typ">Technologies</span> <span class="kwd">with</span> <span class="typ">Zend</span> <span class="typ">OPcache</span><span class="pln"> v7</span><span class="pun">.</span><span class="lit">0.2</span><span class="pun">,</span> <span class="typ">Copyright</span> <span class="pun">(</span><span class="pln">c</span><span class="pun">)</span> <span class="lit">1999</span><span class="pun">-</span><span class="lit">2013</span><span class="pun">,</span> <span class="kwd">by</span> <span class="typ">Zend</span> <span class="typ">Technologies</span> |
Cleaning up
In production, you may not want the build dependencies hanging around. You can rid of the ones installed above by running:
1 | <span class="pln">$ sudo apt</span><span class="pun">-</span><span class="kwd">get</span><span class="pln"> remove </span><span class="pun">--</span><span class="pln">purge build</span><span class="pun">-</span><span class="pln">essential php5</span><span class="pun">-</span><span class="pln">dev</span> |
Example Improvement!
Here’s what happened here after installing Zend OpCache on the fideloper.com server: