PHP取消链接延迟

时间:2013-05-10 21:54:54

标签: php

我遇到unlink函数的问题。

我有一个页面,当刷新时,它会在目录中搜索新添加的文件。用户可以选择管理文件,也可以删除任何文件。但是,当用户删除文件时,在从服务器目录中删除实际文件之前几乎有5秒的延迟。同时,如果用户刷新浏览器,则应该删除的同一文件将重新显示为新文件。这个问题是,如果用户再次删除此文件,由于该初始延迟,该文件不再存在...

对此有何想法?这让我发疯,不知道如何纠正这种情况......

2 个答案:

答案 0 :(得分:1)

一种解决方案可能是在调用unlink()时创建一个新文件,并将新文件命名为$ original_filename。“_ deleted”。然后,当您列出文件时,请以“_deleted”排除任何结尾。然后你只需要担心每次使用cron作业清理所有“_deleted”文件。

    function my_unlink($filename){
      touch($filename.'_deleted');
      unlink($filename);
    }

    function list_files(){
      if ($handle = opendir('.')) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != ".." && !preg_match('/_deleted$/',$entry)) {
                echo "$entry\n";
            }
        }
        closedir($handle);
      }
    }

答案 1 :(得分:0)

clearstatchache(true, $file)仍然值得一试,但在unlink上的文档后我感到悲观。

目录中可能存在太多文件,使用多个目录可能会有所帮助(使用带有文件名前两个字符的目录)。

我希望缓存列表概述页面。使用

header("Cache-Control: no-cache, must-revalidate");

左右可能有帮助。