PHP Opcache 的刷新
在这篇文章中,我们来讨论刷新PHP Opcache 的几种方法。
- PHP方法
- CGI或FastCGI方法
- CLI方法
- Mod_php方法
- PHP-FPM方法
PHP方法 运行PHP有多种方式。每一次更新,PHP都在不断完善,提供的功能也越来越多。运行方式有CGI方式、FastCGI方式、mod_php方式和PHP-FPM方式。
如果你想刷新PHP,你必须先了解PHP方法;然后,你可以使用合适的方法来清除OPcache。
但是,如果你想要一个通用的方法来清除你的Opcache,那么你可以在docroot中创建一个名为flush_cache.php的新PHP文件。
Flush_cache.php:
<?php
opcache_reset();
?>
每当你想清空你的Opcache时,只需浏览flush_cache.php文件即可,该文件将调用整个Opcache的ocache_reset()。该文件将调用整个Opcache的ocache_reset()。
网站将用新的PHP请求再次填充缓存。
需要注意的是,你应该用打开网站的方式调用URL。HTTP或HTTPS。
而且你不必担心正在运行的进程,因为flush_cache.php文件的执行不会影响正在运行的进程。
这是一般的方法,但如果想了解更有特色的方法,请继续阅读。
CGI或FastCGI方法 如果你是以CGI或FastCGI的方式运行PHP,清除OPcache是没有意义的。
因为缓存已经在每次请求时刷新了,当PHP以CGI模式运行时,每次请求都会启动一个新的php-cgi进程。
另一方面,如果你强行为CGI或FastCGI模式的Opcache,会损害商店的整体性能。
每一个请求都会将Opcache存储在FastCGI进程中,但这种缓存是没有好处的,因为它将在新进程开始的那一刻销毁。这意味着Opcache被存储了,但是没有办法利用它。但是,这个进程却在吃CPU。
这就是为什么不推荐使用CGI来运行PHP的原因。
CLI方法 CLI在Opcache方面有点类似CGI。会影响网站的性能。
首先,命令行没有任何Opcache。一旦你启用它,PHP会尝试将Opcache存储在内存中。但是,一旦CLI命令结束,缓存也会失效。
然而,如果你想在CLI上刷新PHP Opcache,你只需要重新启动PHP命令。
只需按CTRL+C键中止命令,然后再重新启动。
mod_php方法 你可以重新加载或重启你的apache webserver来刷新到Opcache是mod_php方法。
$ apachectl graceful
$ service httpd reload
重载会简单地清除PHP中的Opcache,而重启也会做类似的工作。然而,重启会杀死所有活动的HTTP连接。
PHP-FPM方法 要在PHP-FPM方法上刷新PHP Opcache,你必须向你的PHP-FPM守护进程发送一个重载。重载将清除Opcache,当下一个请求到达时,它将迫使它重建缓存。
service php-fpm reload
可以通过重载单主站来刷新所有网站的全部缓存。单个主站会重置主站的Opcache,并刷新整个缓存。
然而,像cachetool这样的工具可以给你更多的命令行控制。cachetool将连接到你的PHP-FPM套接字,并发送类似webserver的命令。
为此,首先,下载phar来操作缓存。
curl -sO http://gordalina.github.io/cachetool/downloads/cachetool.phar
接下来,使用该phar向你的PHP-FPM守护进程发送命令。
$ php cachetool.phar opcache:reset --fcgi=127.0.0.1:9000
$ php cachetool.phar opcache:reset --fcgi=/var/run/php5-fpm.sock
Summary
| PHP Running Method | How to Flush PHP Opcache? | | ---------------------- | --------------------------------------------------- | | General Method | Create flush_cache.php in the docroot and browse it | | CGI or FastCGI Method | Cache is already flushing at every request | | CLI Method | Restart the PHP commands (CTRL + C) | | mod_php Method | Reload or restart your apache webserver | | PHP-FPM Method | Send a reload to your PHP-FPM daemon |
收尾工作 Opcache是一种提高网站性能的神奇方法。它将预编译的脚本存储在共享内存中,所以PHP不需要每次都加载和解析脚本。
但有时,Opcache不会刷新缓存中的更新文件。为此,你必须刷新缓存,这样它才能生成更新的缓存。
这对于使用基于PHP平台的电子通讯商店来说是至关重要的。
在这篇文章中,我提到了刷新Opcache的方法,适用于所有的PHP运行方法。
参考:https://serverguy.com/magento/flush-php-opcache/