【发布时间】:2013-01-24 13:15:31
【问题描述】:
执行./symfony cc 命令时,我需要添加对(new sfAPCCache())->clean() 或apc_clear_cache() 的简单调用。
有谁知道如何做到这一点?我应该在什么时候编辑我的 symfony 应用程序,或者我应该如何注册这个额外的行为?
【问题讨论】:
标签: php caching symfony1 symfony-1.4 apc
执行./symfony cc 命令时,我需要添加对(new sfAPCCache())->clean() 或apc_clear_cache() 的简单调用。
有谁知道如何做到这一点?我应该在什么时候编辑我的 symfony 应用程序,或者我应该如何注册这个额外的行为?
【问题讨论】:
标签: php caching symfony1 symfony-1.4 apc
其实我发现我可以监听一个事件来给./symfony cc添加新的行为:
$this->dispatcher->connect('task.cache.clear', array('ClearAPCCache','clearCache'))
仍然存在无法通过命令行任务清除 APC 缓存的问题,因为 APC 缓存与 Web 服务器进程相关,而 symfony 命令是命令行脚本。
【讨论】:
您只需创建自己的自定义任务。
./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以集中方式在大量应用程序上调用,因此我可以覆盖缓存的行为很重要:清除。不幸的是,添加新任务并不能解决问题。
$this->dispatcher->connect('task.cache.clear', array('ClearAPCCache','clearCache')); -- 仍然是无法从命令行任务中清除 APC 缓存的问题。