2014-01-07 92 views
1

假设我有一个名为“temp”的目录,它有很多自动生成的垃圾文件。如何使用PHP自动清除/清空每周一次的“临时”目录?我不知道那里有什么文件。我只想清空目录。PHP空目录/文件夹

+0

@MatteoTassinari谢谢! – Paranoid

回答

1

使用cron调用将删除整个文件夹的脚本,然后再次mkdir。

2

首先你需要cron jobphp script来擦除文件。 这里的PHP脚本:

$fileToDelete = glob('path/to/temp/*'); 
foreach($fileToDelete as $file){ 
    if(is_file($file)) 
    unlink($file); 
} 

之后,你需要配置的cron每天执行这个文件,例如或者你想:

0 0 * * 0 /path/script.php //will execute every week 
2

您可以使用一个代码片段像这样,如果您的应用程序位于基于Linux的系统上,然后运行cron作业。

$files = glob('path/to/folder/*'); // get all file names present in folder 
foreach($files as $file){ // iterate files 
    if(is_file($file)) 
    unlink($file); // delete the file 
} 
1

给你的文件夹的路径在$ PATH

$path = $_SERVER['DOCUMENT_ROOT'].'/work/removegolder/'; // path of your directory 
header('Content-type: text/plain'); // plain text for easy display 

// preconditon: $dir ends with a forward slash (/) and is a valid directory 
// postcondition: $dir and all it's sub-directories are recursively 
// searched through for .svn directories. If a .svn directory is found, 
// it is deleted to remove any security holes. 
function removeSVN($dir) { 
    //echo "Searching: $dir\n\t"; 

    $flag = false; // haven't found .svn directory 
    $svn = $dir . 'foldername'; 

    if(is_dir($svn)) { 
     if(!chmod($svn, 0777)) 
      echo "File permissions could not be changed (this may or may not be a problem--check the statement below).\n\t"; // if the permissions were already 777, this is not a problem 

     delTree($svn); // remove the directory with a helper function 

     if(is_dir($svn)) // deleting failed 
      echo "Failed to delete $svn due to file permissions."; 
     else 
      echo "Successfully deleted $svn from the file system."; 

     $flag = true; // found directory 
    } 

    if(!$flag) // no .svn directory 
     echo 'No directory found.'; 
    echo "\n\n"; 

    $handle = opendir($dir); 
    while(false !== ($file = readdir($handle))) { 
     if($file == '.' || $file == '..') // don't get lost by recursively going through the current or top directory 
      continue; 

     if(is_dir($dir . $file)) 
      removeSVN($dir . $file . '/'); // apply the SVN removal for sub directories 
    } 
} 

// precondition: $dir is a valid directory 
// postcondition: $dir and all it's contents are removed 
// simple function found at http://www.php.net/manual/en/function.rmdir.php#93836 
function delTree($dir) { 
    $files = glob($dir . '*', GLOB_MARK); // find all files in the directory 

    foreach($files as $file) { 
     if(substr($file, -1) == '/') 
      delTree($file); // recursively apply this to sub directories 
     else 
      unlink($file); 
    } 

    if (is_dir($dir)){ 
       //echo $dir; 
       // die; 
     //rmdir($dir); // remove the directory itself (rmdir only removes a directory once it is empty) 

      } 
     } 

// remove all directories in the 
// current directory and sub directories 
// (recursively applied) 
removeSVN($path);