所以我的问题很简单:我们可以在缓存期间设置symfony2缓存文件的路径:清除,我们可以稍后更改它还是可以使它相对?还是什么?
说明:
我正在使用heroku-buildpack-php-tyler heroku-buildpack-symfony2的分叉在Heroku上部署Symfony2应用程序。
在部署时,平台会收到 git push 到随机临时位置,例如 / tmpXXXX / ,用于编译/安装/等。
编译后,它将 / tmpXXXX / 的内容存储为应用程序的“zip安装”,以便轻松地将其部署到其他实例上。然后,应用程序将在启动时部署到新实例的 / app / 目录。
问题,如果我们在编译结束前运行缓存:清除,缓存文件的路径将从 / tmpXXXX /转储位置......打破一切。
所以周转是在启动期间预热缓存,它可以工作,但通常需要60秒以上,如果您的应用程序启动时间超过60秒,则在heroku上it gets rebooted并且您收到错误
答案 0 :(得分:1)
我正在回答我自己的问题,因为我在CCH / Heroku buildpack上为它做了一个pr
一个简单的sed
就像这个file一样。
代码如下所示:
find $CACHE_DIR/app/cache/prod -type f -exec sed -i "s@$CACHE_DIR@$APP_DIR@g" {} \; | indent
答案 1 :(得分:0)
您可以为部署创建custom Symfony environment called "deploy",然后override the different cache folders。
获得新环境(在下面的示例中命名为“deploy”)后,您可以将类getCacheDir
的方法app/AppKernel.php
覆盖为类似
public function getCacheDir()
{
if ($this->environment === "deploy") {
return '/the/path/to/your/symfony/cache/'.$this->environment;
} else {
return $this->rootDir.'/cache/'.$this->environment;
}
}
确保环境只能由受信任的用户在本地访问。
答案 2 :(得分:0)
有讨论&在这里发生这种情况的适当解决方案......
https://github.com/heroku/heroku-buildpack-php/issues/64
https://github.com/symfony/symfony/pull/10999
带有修复的新buildpack(我现在就试试)