我在Symfony有一个链接到MySQL数据库的网站.该网站有一些麻烦,所以我必须更新数据库中的信息.问题是,当我在数据库上更新时,它会在那里保持更新,但在网站上它没有显示任何变化.
例如,用户已注册.我去数据库更改电子邮件,以便我可以使用相同的电子邮件注册另一个帐户.数据库使用新电子邮件进行更新,但在网站上显示旧电子邮件仍在使用中.
我知道我正在更新正确的数据库,因为当我在网站上注册一个新客户端时,它会出现在数据库中.关于为什么会发生这种情况的任何想法?
HPi*_*rce 13
就像Angel Iliikov在评论中提到的那样,它很可能是一个缓存问题.以下建议假定您可以访问命令行 - 典型的Symfony用户应该这样做.如果您还没有,大多数托管服务提供商都允许您获得SSH访问权限.
清除以下缓存:
1. Symfony的缓存
Symfony会在缓存文件中存储大量数据,以防止它从头开始处理请求.当Symfony应用程序变得不稳定时,一个非常常见的解决方法是清除此缓存并重试.清除此缓存的标准方法是在项目的根目录下运行控制台命令:
$ app/console cache:clear
Run Code Online (Sandbox Code Playgroud)
如果您遇到问题,David Soussan的回答会提供有关此问题的更多信息.
2.教条的缓存
根据评论者的另一个问题(由我格式化):
doctrine缓存通常存储在apc而不是文件系统中,因此删除缓存文件无济于事.通用
app/console cache:clear仅适用于symfony(app)缓存.我不认为它清除了学说缓存.-caponica
备用PHP缓存(APC)是启用的可选组件php.ini.如果它恰好被启用,那么Doctrine也可能在那里缓存信息.
前面提到的问题的接受答案提供了清除Doctrine缓存的答案:
Run Code Online (Sandbox Code Playgroud)$ app/console doctrine:cache:clear-metadata $ app/console doctrine:cache:clear-query $ app/console doctrine:cache:clear-result-amitchhajer
3.浏览器的缓存
这不太可能导致任何问题.但是,如果您正在通过HTTP发送缓存标头 - 应用程序可能已正确更新数据,但您的浏览器正在显示旧页面.
每个浏览器都有不同的清除缓存的方法.Google为Chrome操作系统提供了支持.和Mozilla支持Firefox中的操作方式.
如果清除缓存无法解决您的问题,则可能是您的应用程序或工作流程出现问题,需要进行调试.你可以尝试一些事情:
确保您确实更新了正确的数据库.在两个单独的DB客户端上确认.
创建自己的Symfony命令 ,您唯一要做的就是查询数据库.如果它返回正确的结果,则应检查其他组件是否使用相同的查询.如果没有,请检查您的配置/参数以确保您使用正确的数据库.
Dav*_*san 10
如果您的Symfony应用程序未显示更新的数据库记录,因为它正在使用仍包含旧数据的缓存.这通常是Symfony的问题,刷新页面只是从缓存重新加载.尝试先清除缓存.现在,经常缓存:clear不能从命令行工作,我已经让它一直发生,从来没有真正理解为什么.答案是删除所有缓存文件,根据Fabien Potencier的提示:http://fabien.potencier.org/a-symfony-tip-clear-the-cache-without-the-command-line.html.这是有效的,是我的首选解决方案,例如; 之后,composer update没有清除缓存.事实上,我习惯于在进行作曲家安装或更新之前删除我的开发机器上的缓存文件.