0

我正在运行一个带有 LAMP 系统的网站。

内容来自数据库。

出于缓存目的,我在我的网络服务器上创建文件(包含可缓存的内容)(通过fwrite())。

每隔一段时间我都会删除缓存文件(通过unlink())。

文件创建和删除是通过 cronjob 完成的。

我的问题是:当我网站的访问者当前正在浏览(=从网络服务器请求)文件 A.php 并且我试图写入或删除这个相同的文件 A.php 时会发生什么。

准确地说:如果我的 cronjob 发出unlink()命令并同时将文件提供给用户会发生什么。

这会造成竞争条件吗?

我知道如何从 unlink 和 fwrite 操作中检索状态,所以只要这些函数返回 false(不能被删除/写入),我可以循环我的 unlink/fwrite 吗?

期待阅读您的意见/答案!

4

1 回答 1

-1

是的,这显然会产生竞争条件。来自网络服务器的文件请求和从 cron 作业中删除是独立的过程,您无法知道其中一个或另一个是否正在处理该文件。

于 2013-07-11T11:09:40.390 回答