Symfony2:根据传入请求自定义数据库连接、缓存和日志文件夹
Symfony2: Customize database connection, cache and log folders, based on incoming request
我正在尝试构建一个多租户解决方案,使用现有的代码库,但使用隔离的数据库、缓存和日志文件。
一种有效的方法是根据传入的请求域名动态计算以下内容:
- 数据库连接参数
- 缓存文件夹
- 日志文件夹
在 Symfony1.x 中,我可以通过创建自定义过滤器来做到这一点 class,但我不知道如何在 Symfony2 中做到这一点。
那么我的问题是:
我如何根据传入请求修改 symfon2 应用程序的上述参数?
我同意 Jurgis Gregov 的观点。
您应该在 web/app.php 行中更改:
$kernel = new AppKernel('prod', false);
至:
$kernel = new AppKernel($_SERVER['HTTP_HOST'], false);
AppKernel 的第一个参数是环境name
之后,您可以在 app/config 中创建一个新的配置文件,其名称为:
config_名称.yml
哪里可以设置学说配置。
您的缓存将在文件夹中:app/cache/name
你的日志会在:app/logs/name.log(你也可以在config yml文件中设置登录路径)
我不知道是否有其他方法可以更改学说参数,但我知道您还可以通过覆盖方法更改日志和缓存文件夹:
app/AppKernel.php 中的 getLogDir() 和 getCacheDir() 可以使用 REQUEST 来设置它。
我正在尝试构建一个多租户解决方案,使用现有的代码库,但使用隔离的数据库、缓存和日志文件。
一种有效的方法是根据传入的请求域名动态计算以下内容:
- 数据库连接参数
- 缓存文件夹
- 日志文件夹
在 Symfony1.x 中,我可以通过创建自定义过滤器来做到这一点 class,但我不知道如何在 Symfony2 中做到这一点。
那么我的问题是:
我如何根据传入请求修改 symfon2 应用程序的上述参数?
我同意 Jurgis Gregov 的观点。
您应该在 web/app.php 行中更改:
$kernel = new AppKernel('prod', false);
至:
$kernel = new AppKernel($_SERVER['HTTP_HOST'], false);
AppKernel 的第一个参数是环境name
之后,您可以在 app/config 中创建一个新的配置文件,其名称为: config_名称.yml
哪里可以设置学说配置。
您的缓存将在文件夹中:app/cache/name
你的日志会在:app/logs/name.log(你也可以在config yml文件中设置登录路径)
我不知道是否有其他方法可以更改学说参数,但我知道您还可以通过覆盖方法更改日志和缓存文件夹: app/AppKernel.php 中的 getLogDir() 和 getCacheDir() 可以使用 REQUEST 来设置它。