使用Capifony部署Symfony2应用程序 - APC加载程序仍使用以前的版本

Rob*_*ers 4 php apc symfony capifony

我最近将我的Symfony2应用程序升级到2.1并将其迁移到新服务器,因此我认为我将配置Capifony以使部署更简单.一切都变得很好,除了它现在没有使用APCLoader的事实,所以我不得不暂时评论它,直到它被排序.

以下是相关代码app.php:

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';

// Use APC for autoloading to improve performance.
// Change 'sf2' to a unique prefix in order to prevent cache key conflicts
// with other applications also using APC.

$loader = new ApcClassLoader('my_prefix', $loader);
$loader->register(true);
Run Code Online (Sandbox Code Playgroud)

问题是'my_prefix'每个版本不是唯一的,因此它最终会尝试查找属于以前版本的缓存文件,这些文件可能存在也可能不存在.这显然是一个非常大的问题!

什么是最好的解决方案?我应该以某种方式编写一个在部署之前运行capifony的任务,将前缀更改为唯一的东西,例如#{latest_release}变量?或者我应该在每次部署后以某种方式重置APC缓存的全部内容?

我不太确定做这些事情的最佳方法,所以如果你推荐其中一个可以请你指出正确的方向来实现它吗?或者有没有我想到的替代解决方案?

the*_*ler 9

您可以使用ApcBundle,它提供将在web/目录中创建新文件的命令,通过HTTP执行它,然后将其删除.然后,您可以run "/path/to/app/console apc:clear"在部署脚本中使用您的命令.