我有一个Symfony2网站正在生产环境中进行测试。我已经清除了它的缓存,因为我已经做了一些修改并且可能还会进行更多的修改,但是存在一个小问题:
当缓存被清除并且在此期间我想要预热它时,访问网站的某个人重建了缓存。这会创建一个小问题,因为缓存正在构建中,但不完全构建,因为删除仍在进行中,缓存的一半被删除。
之后发生的情况是,缓存被构建,但只构建了其中的一部分。Symfony认为缓存已经完全构建,并且在不尝试再次构建它的情况下运行,但它在半构建的缓存上运行。删除过程有点长(约15秒),因此在此期间没有人必须通过访问网站来创建缓存。
要么是缓存已经完全构建,覆盖了旧缓存,系统将这些新文件视为旧文件,删除其中的一部分,而其他一些文件则保留。不太确定,我不知道如何检查这一点。
例如,我收到的错误之一是:
如果我不使用这个bundle,那么我将会从Doctrine中获得另一个缓存问题。这个问题在每次网站访问时都会出现,直到我再次删除缓存,而没有任何人访问网站。它完全阻止了对网站的访问,并使其无法正常工作。
此外,预热需要一段时间。如果在缓存正在预热时有人访问网站,会不会也产生冲突呢?
如何处理这个问题?我需要关闭Apache服务、清除和预热缓存,然后重新启动Apache吗?在生产环境中,这是如何处理的?
编辑: 我发现了一些有趣的东西。当我删除cache/prod文件夹时,会出现这个bug。如果我只删除文件夹中的内容而不删除文件夹本身,似乎就不会出现这个bug。我想知道为什么。
当缓存被清除并且在此期间我想要预热它时,访问网站的某个人重建了缓存。这会创建一个小问题,因为缓存正在构建中,但不完全构建,因为删除仍在进行中,缓存的一半被删除。
之后发生的情况是,缓存被构建,但只构建了其中的一部分。Symfony认为缓存已经完全构建,并且在不尝试再次构建它的情况下运行,但它在半构建的缓存上运行。删除过程有点长(约15秒),因此在此期间没有人必须通过访问网站来创建缓存。
要么是缓存已经完全构建,覆盖了旧缓存,系统将这些新文件视为旧文件,删除其中的一部分,而其他一些文件则保留。不太确定,我不知道如何检查这一点。
例如,我收到的错误之一是:
The directory "D:\xampp\htdocs\med-app\app\app\cache\dev/jms_diextra/metadata" does not exist.
如果我不使用这个bundle,那么我将会从Doctrine中获得另一个缓存问题。这个问题在每次网站访问时都会出现,直到我再次删除缓存,而没有任何人访问网站。它完全阻止了对网站的访问,并使其无法正常工作。
此外,预热需要一段时间。如果在缓存正在预热时有人访问网站,会不会也产生冲突呢?
如何处理这个问题?我需要关闭Apache服务、清除和预热缓存,然后重新启动Apache吗?在生产环境中,这是如何处理的?
编辑: 我发现了一些有趣的东西。当我删除cache/prod文件夹时,会出现这个bug。如果我只删除文件夹中的内容而不删除文件夹本身,似乎就不会出现这个bug。我想知道为什么。