【问题标题】:Delete (unlink) or Create (fwrite) file with PHP when file is in use使用文件时使用 PHP 删除(取消链接)或创建(fwrite)文件
【发布时间】:2013-07-11 11:07:38
【问题描述】:

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

内容来自数据库。

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

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

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

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

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

这会造成竞争条件吗?

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

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

【问题讨论】:

    标签: php race-condition fwrite unlink


    【解决方案1】:

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

    【讨论】:

    • 这必须作为评论添加
    • 为什么会这样?问题是“这会造成竞争条件吗?”
    • 谢谢 - 任何关于如何克服这个问题的建议都非常受欢迎(:
    • 好吧,你应该提供更多关于你正在尝试做什么的详细信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多