我有一个简单的缓存系统
if (file_exists($cache)) {
echo file_get_contents($cache);
// if coming here when $cache is deleting, then nothing to display
}
else {
// PHP process
}
我们会定期删除过期的缓存文件,例如 1 小时后删除所有缓存。虽然这个过程非常快,但我认为可以在if statement
和file_get_contents
进程之间删除缓存文件。
我if statement
的意思是当检查缓存文件是否存在时,它存在;但是当file_get_contents
试图捕捉它时,它不再存在(通过同时缓存删除过程删除)。
file_get_contents
锁定文件以避免在读取过程中进行删除过程。if statement
但是当将 PHP 进程发送到第一个条件(在 开始之前)时,可以删除该文件file_get_contents
。
有什么方法可以避免这种情况吗?缓存删除系统是否不同?
注意:我没有遇到任何实际问题,因为捕获此事件的可能性不大,但从逻辑上讲这是可能的,并且应该在重负载时发生。