在缓存期间设置symfony2缓存文件的路径:clear

时间:2013-07-20 14:56:26

标签: symfony heroku

所以我的问题很简单:我们可以在缓存期间设置symfony2缓存文件的路径:清除,我们可以稍后更改它还是可以使它相对?还是什么?

说明:

我正在使用heroku-buildpack-php-tyler heroku-buildpack-symfony2的分叉在Heroku上部署Symfony2应用程序。

在部署时,平台会收到 git push 到随机临时位置,例如 / tmpXXXX / ,用于编译/安装/等。

编译后,它将 / tmpXXXX / 的内容存储为应用程序的“zip安装”,以便轻松地将其部署到其他实例上。然后,应用程序将在启动时部署到新实例的 / app / 目录。

问题,如果我们在编译结束前运行缓存:清除,缓存文件的路径将从 / tmpXXXX /转储位置......打破一切。

所以周转是在启动期间预热缓存,它可以工作,但通常需要60秒以上,如果您的应用程序启动时间超过60秒,则在heroku上it gets rebooted并且您收到错误

3 个答案:

答案 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(我现在就试试)

https://github.com/CHH/heroku-buildpack-php/pull/67