我的unlink
功能有些问题。
我有一个页面,当刷新时,它会在目录中搜索新添加的文件。用户可以选择管理文件,也可以删除任何文件。但是,当用户删除文件时,在从服务器目录中删除实际文件之前几乎有 5 秒的延迟。同时,如果用户刷新浏览器,本应删除的同一文件将重新显示为新文件。这样做的问题是,如果用户再次删除此文件,则由于初始延迟,该文件不再存在......
对此有什么想法吗?这让我发疯,不知道如何补救这种情况......
我的unlink
功能有些问题。
我有一个页面,当刷新时,它会在目录中搜索新添加的文件。用户可以选择管理文件,也可以删除任何文件。但是,当用户删除文件时,在从服务器目录中删除实际文件之前几乎有 5 秒的延迟。同时,如果用户刷新浏览器,本应删除的同一文件将重新显示为新文件。这样做的问题是,如果用户再次删除此文件,则由于初始延迟,该文件不再存在......
对此有什么想法吗?这让我发疯,不知道如何补救这种情况......
一种解决方案是在调用 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);
}
}
clearstatchache(true, $file)
仍然可能值得一试,尽管我对unlink
.
也许目录中的文件太多,使用多个目录可能会有所帮助(使用带有文件名前两个字符的目录)。
但是,我希望列表概述页面被缓存。使用
header("Cache-Control: no-cache, must-revalidate");
左右可能会有所帮助。