我正在运行一个带有LAMP系统的网站。
内容来自数据库。
出于缓存目的,我在我的网络服务器上创建文件(包含可缓存的内容)(通过fwrite()
)。
我偶尔会删除缓存文件(通过unlink()
)。
使用cronjob完成文件创建和删除。
我的问题是:当我的网站访问者当前正在浏览(=从网络服务器请求)文件A.php时,会发生什么,我正在尝试写入或删除这个相同的文件A.php。
准确地说:如果我的cronjob发出unlink()
命令并同时向用户提供文件,会发生什么。
这会造成竞争条件吗?
我知道如何从unlink和fwrite操作中检索状态,所以只要这些函数返回false(无法删除/写入),我就可以循环遍历unlink / fwrite吗?
期待阅读您的意见/答案!
答案 0 :(得分:-1)
是的,这显然会造成竞争条件。来自Web服务器的文件请求和来自cron作业的删除都是独立的进程,您无法知道其中一个是否正在对该文件执行某些操作。