sixdays / opcache-bundle
提供从控制台清除opcache缓存的命令行任务
v1.0.1
2017-08-03 12:32 UTC
Requires
- php: >=5.4.0
- symfony/framework-bundle: >=2.1
This package is not auto-updated.
Last update: 2024-09-24 04:54:36 UTC
README
提供从控制台清除opcache缓存的命令行。
opcache的问题在于无法从命令行清除它。因为即使你为PHP CLI启用了opcache,它与Apache PHP或PHP-CGI的opcache实例是不同的。
这里的技巧是在web目录中创建一个文件,通过HTTP执行它,然后删除它。
安装
-
将其添加到你的composer.json文件中
{ "require": { "sixdays/opcache-bundle": "dev-master" } }或者
composer require sixdays/opcache-bundle composer update sixdays/opcache-bundle -
将此包添加到你的应用程序内核中
// app/AppKernel.php public function registerBundles() { return array( // ... new Sixdays\OpcacheBundle\SixdaysOpcacheBundle(), // ... ); } -
配置
sixdays_opcache服务# app/config/config.yml sixdays_opcache: base_url: https:/// #could also be https://, or http://127.0.0.1:8000/, or any other valid URL web_dir: %kernel.root_dir%/../web
使用方法
清除所有opcache缓存
$ php app/console opcache:clear
Capifony使用
要自动清除每次capifony部署后的opcache缓存,你可以定义一个自定义任务
namespace :symfony do desc "Clear opcache cache" task :clear_opcache do capifony_pretty_print "--> Clear opcache cache" run "#{try_sudo} sh -c 'cd #{latest_release} && #{php_bin} #{symfony_console} opcache:clear --env=#{symfony_env_prod}'" capifony_puts_ok end end
并添加此钩子
# opcache after "deploy", "symfony:clear_opcache"
Nginx配置
如果你使用nginx并且限制传递给fpm的PHP脚本,你需要允许以'opcache'为前缀的PHP文件。否则,你的web服务器将返回请求的PHP文件作为文本,系统将无法清除opcache缓存。
示例配置
# Your virtual host
server {
...
location ~ ^/(app|app_dev|opcache-.*)\.php(/|$) { { # This will allow opcache (opcache-{MD5HASH}.php) files to be processed by fpm
fastcgi_pass 127.0.0.1:9000;
...