sixdays/opcache-bundle

提供从控制台清除opcache缓存的命令行任务

安装次数: 58,494

依赖者: 1

推荐者: 0

安全性: 0

星标: 30

关注者: 1

分支: 8

开放问题: 1

类型:symfony-bundle

v1.0.1 2017-08-03 12:32 UTC

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执行它,然后删除它。

安装

  1. 将其添加到你的composer.json文件中

    {
        "require": {
            "sixdays/opcache-bundle": "dev-master"
        }
    }

    或者

        composer require sixdays/opcache-bundle
        composer update sixdays/opcache-bundle
  2. 将此包添加到你的应用程序内核中

     // app/AppKernel.php
     public function registerBundles()
     {
         return array(
             // ...
             new Sixdays\OpcacheBundle\SixdaysOpcacheBundle(),
             // ...
         );
     }
    
  3. 配置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;
    ...