0

我搜索了一些相关的问题,但无法理解。

我想每 24 小时后删除文件夹的所有文件,但有时我会收到警告,有时它会起作用。文件夹路径是c:\wamp\www\Jamil.

这是来源:

<?php
$dir = "Jamil"; // directory name

foreach (scandir($dir) as $item) {
    if ($item == '.' || $item == '..')
        continue;

        if((time() - filemtime($item)) >= 30    && is_file($item)){
        unlink($dir.DIRECTORY_SEPARATOR.$item);
        echo "All files deleted";}
    }   
//rmdir($dir);

?>

我从各个站点复制了代码。任何人都可以帮忙吗?我收到这个警告:

警告:filemtime() [function.filemtime]: stat failed for jamil.html in C:\wamp\www\delete1.php 第 10 行

4

3 回答 3

1

如果您为此使用 php 脚本,您仍然需要以某种方式安排它运行。因此,您可以改为使用 cron 或计划任务来安排删除本身。 是 crontab 的一个很好的参考。如果您使用 Windows 为自己编写一个小批量脚本,请转到控制面板,您将获得一个不错的小向导,指导您完成任务调度。

PHP 真的不是计划任务的工具。如果您的用户需要在他/她喜欢的时候进行删除,那很好,但对于计划任务则不需要。

于 2013-04-26T09:43:49.970 回答
0
is_file($item)

尝试

 if(is_dir($dir.DIRECTORY_SEPARATOR.$item) && $item != ".." && $item != ".")
于 2013-04-26T09:56:04.107 回答
0

试试这个功能;

function wipedir($dir) {
        try{  
            if(is_dir($dir)){
                $mydir = opendir($dir);
                while(false !== ($file = readdir($mydir))) {
                    if($file != "." && $file != "..") {
                        chmod($dir.$file, 0777);
                        if(is_dir($dir.$file)) {
                            chdir('.');
                            destroy($dir.$file.'/');
                            rmdir($dir.$file) or DIE("Unable to delete $dir$file");
                        }else{
                            unlink($dir.$file) or DIE("Unable to delete $dir$file");
                        }
                    }
                }
                closedir($mydir);

                return true;
            }else{return true;}
        }catch (Exception $e){return false;} 
    }

所以用法是

$dir = 'Jamil';
wipedir($dir);

这应该放在由 crontab 等按指定时间间隔运行的文件中。

于 2013-04-26T09:31:28.217 回答