4

我的unlink功能有些问题。

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

对此有什么想法吗?这让我发疯,不知道如何补救这种情况......

4

2 回答 2

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);
      }
    }
于 2013-05-11T00:19:40.350 回答
0

clearstatchache(true, $file)仍然可能值得一试,尽管我对unlink.

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

但是,我希望列表概述页面被缓存。使用

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

左右可能会有所帮助。

于 2013-05-11T00:55:43.500 回答