上下文:我今天被要求在一个相当古老的项目上添加新功能(类似于Symfony 2.0)。它包括向实体添加新属性并将相应的字段添加到版本表单。儿童游戏:我编辑了代码,它在开发环境中很好用(直接在app.php中设置)
问题:当app.php中设置的环境为prod
时,表单提交时不会保留实体,也不会在加载表单时检索实体。
调查:到目前为止我在prod
env中检查过的内容:
假设:当实体被刷新时,问题似乎是适用的,就像新字段被完全忽略一样。
假设:在向更有经验的symfony开发人员公开我的问题之后,唯一的建议是可能有一个PHP缓存(而不是symfony)寄存在我的prod
env中。这个假设正在测试中(我自己无法重启apache),我可以在最好的情况下明天测试它。
尽管如此,我觉得PHP缓存假设有10%的机会成为好的。我无法与您分享整个项目代码,但我问您是否可以发布关于此问题的每个想法。
更新:我重启了Apache2。问题仍然存在。似乎Doctrine在项目的早期版本上构建了它的缓存(例如,它没有看到注释中的任何更改),即使app / cache /为空。有什么想法吗?
答案 0 :(得分:2)
你能澄清一下吗? Symfony的缓存与学说不一样。根据您的配置原则,可能使用apc,reddis或其他东西来缓存自己的查询和结果数据。如果还没有,请尝试执行以下命令:我已手动和命令多次删除缓存 线
app/console doctrine:cache:clear-metadata
app/console doctrine:cache:clear-query
app/console doctrine:cache:clear-result
如果你仍然没有运气,我有超过10%的人确定apache重启会做到这一点。
如果这样有效,你应该检查你的prods配置yml,看看你是否找到类似的东西:
metadata_cache_driver : something
result_cache_driver : something
query_cache_driver : something
答案 1 :(得分:2)
完整答案是执行:
app/console doctrine:cache:clear-metadata --env=prod
缓存是由仅存在于生产环境中的memcache配置引起的。