【问题标题】:How to force reload routes in Symfony?如何在 Symfony 中强制重新加载路由?
【发布时间】:2017-05-12 23:49:01
【问题描述】:

我正在编写一个动态更新现有路由的脚本,然后将这些路由转储到同一请求中的缓存文件以供以后使用。

我能够找出删除所有当前路由缓存文件的方法,然后在路由器上使用 warmUp,但是当我使用 getRouteCollection 时,我仍然会在该请求中获得相同的旧路由,因为集合已经加载。当我尝试通过使用自定义路由器和fource集合强制重新加载集合为null时,我收到错误

不要在 .... 中添加两次“abc_custom”加载程序。

我的猜测是加载器似乎重新加载了所有配置文件(不限于路由配置文件)并导致错误。

我想知道我是否对这个问题采取了错误的方法,或者是否有任何好的方法可以解决这个问题?

【问题讨论】:

  • 重定向会做到这一点,但你的方法有点脆弱。如果在你玩弄缓存的时候有另一个请求进来,那么它可能会失败。动态路由有几种方法。考虑研究它们。
  • 你说它脆弱是对的,但是如果我在另一个文件夹中生成缓存然后将它们复制过来,那么它基本上与清除应用程序的缓存相同并且可以将风险降到最低?我研究了 DynamicRouter ,但它似乎有点矫枉过正,因为我不需要所有的功能(这会带来性能损失)。我正在研究它的代码,看看它如何处理添加到集合中的新路由,希望它可以提供一些提示。

标签: symfony


【解决方案1】:

为了回答我自己的问题,最后我手动清除了路由缓存文件夹(这是为 SF3 准备的)。我刚刚升级到 SF4,需要更新我的代码,因为他们似乎已经更新了在 SF4 中生成路由缓存文件夹的方式。

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 2016-01-31
    • 1970-01-01
    • 2011-12-12
    • 2016-06-29
    • 2020-06-29
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    相关资源
    最近更新 更多