【问题标题】:How to add custom behaviour to symfony cache:clear?如何将自定义行为添加到 symfony 缓存:清除?
【发布时间】:2013-01-24 13:15:31
【问题描述】:

执行./symfony cc 命令时,我需要添加对(new sfAPCCache())->clean()apc_clear_cache() 的简单调用。

有谁知道如何做到这一点?我应该在什么时候编辑我的 symfony 应用程序,或者我应该如何注册这个额外的行为?

【问题讨论】:

    标签: php caching symfony1 symfony-1.4 apc


    【解决方案1】:

    其实我发现我可以监听一个事件来给./symfony cc添加新的行为:

    $this->dispatcher->connect('task.cache.clear', array('ClearAPCCache','clearCache'))
    

    仍然存在无法通过命令行任务清除 APC 缓存的问题,因为 APC 缓存与 Web 服务器进程相关,而 symfony 命令是命令行脚本。

    【讨论】:

    • 如果您将 Web 服务器配置为可在本地访问,则可以让命令行使用 curl 或等效命令调用 APC 缓存清除 URL。
    【解决方案2】:

    您只需创建自己的自定义任务。

    ./symfony generate:task your_task_name
    

    在这个任务中(在lib 文件夹中)你只需要运行类似

    protected function execute($arguments = array(), $options = array())
    {
        // Run your own apc cache
        // ...
    
        /// Then run the cache:clear
        $this->runTask('cache:clear');
    }
    

    【讨论】:

    • 在我们的系统中,命令symfony cache:clear以集中方式在大量应用程序上调用,因此我可以覆盖缓存的行为很重要:清除。不幸的是,添加新任务并不能解决问题。
    • @francescostablum 但正如我所说,您不会有很多其他选择。
    • 实际上,我发现我可以监听一个事件:$this->dispatcher->connect('task.cache.clear', array('ClearAPCCache','clearCache')); -- 仍然是无法从命令行任务中清除 APC 缓存的问题。
    • 因为 APC 缓存与 web 服务器进程有关,而 symfony 命令是命令行脚本。这是我从实验中了解到的。不确定它是否 100% 正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2017-12-21
    • 2013-03-26
    • 2018-06-01
    • 2014-06-26
    • 2012-11-12
    相关资源
    最近更新 更多