繁体   English   中英

Symfony 2产品和开发环境之间的不同行为

[英]Symfony 2 Different behaviors between prod and dev environments

上下文:今天,我被要求在一个相当老的项目(例如Symfony 2.0)中添加一个新功能。 它包括将新属性添加到实体,并将相应字段添加到编辑表单。 儿童游戏:我已经编辑了代码,并且在开发环境中效果很好(直接在app.php中设置)

问题:在app.php中设置的环境为prod时,提交表单时该实体不会持久化,而在加载表单时也不会检索该实体。

调查:到目前为止,我在prod env中检查的内容:

  • 提交的表格是正确的
  • 控制器设法映射表单并正确填充实体
  • 我已经手动和从命令行多次删除了缓存
  • 提交表单后,我已经检查了SQL查询,查询没有按预期更新我的新字段

假设:刷新实体时似乎会出现此问题,就像新字段完全被忽略一样。

假设:在向经验丰富的symfony开发人员展示了我的问题之后,唯一的建议是,某个地方可能存在一个PHP缓存(而不是symfony缓存),这使我的prod env处于寄生状态。 这个假设正在测试中(我自己无法重新启动apache),也许明天明天将在最佳情况下对其进行测试。

不过,我仍然觉得PHP缓存假设有10%的几率才是好的。 我无法与您分享整个项目的代码,但是我问您是否可以发表关于此问题的所有想法。

更新:我已经重新启动了Apache2。 问题仍然存在。 即使app / cache /为空,Doctrine似乎仍在项目的旧版本上构建其缓存(例如,注释中看不到任何更改)。 任何想法 ?

我已经手动和从命令行多次删除了缓存

你能澄清一下吗? Symfony的缓存与学说的缓存不同。 根据您的配置原则,可以使用诸如apc,reddis之类的东西或其他东西来缓存其自己的查询和结果数据。 如果还没有,请尝试执行以下命令:

app/console doctrine:cache:clear-metadata 
app/console doctrine:cache:clear-query  
app/console doctrine:cache:clear-result 

如果您仍然不走运,那么我有10%的把握确保重新启动apache可以解决问题。

如果这可行,则应检查prods config yml,看看是否找到类似以下内容的东西:

metadata_cache_driver : something
result_cache_driver : something
query_cache_driver : something

完整的答案是执行:

app/console doctrine:cache:clear-metadata --env=prod

缓存是由仅在生产环境中存在的memcache配置引起的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM