2013-07-20 149 views
0

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

说明:

我部署使用的heroku-buildpack-php-tyler叉子叉在Heroku上一个Symfony2的应用:heroku-buildpack-symfony2

在部署该平台接收到混帐推到一个随机临时位置说/tmpXXXX/编译/安装/等。

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

问题是,如果我们运行一个缓存:编译结束前明确,缓存文件的路径是从/tmpXXXX/位置倾倒......打破一切。

因此,转变是在启动过程中对缓存进行加热,并且它可以正常工作,但它通常需要60秒以上,而在heroku上,如果您的应用的启动时间超过60秒,it gets rebooted并且出现错误。

回答

0

您可以为您的部署创建custom Symfony environment called "deploy",然后创建override the different cache folders

一旦你有你的新环境(命名在下面的例子中“部署”),你可以覆盖类app/AppKernel.php的方法getCacheDir到这样的事情

public function getCacheDir() 
{ 
    if ($this->environment === "deploy") { 
     return '/the/path/to/your/symfony/cache/'.$this->environment; 
    } else { 
     return $this->rootDir.'/cache/'.$this->environment; 
    } 
} 

确保环境仅在本地访问由可信用户。

+0

好主意!但是,这也意味着我的缓存文件将被转储到/ app/app/cache /,并且在容器编译结束之前我不得不将它们复制回我的本地目录。 我会考虑一下。 – Azr