簡體   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