【发布时间】:2014-01-25 05:38:29
【问题描述】:
假设,我有一个名为“temp”的目录,里面有很多自动生成的垃圾文件。如何使用 PHP 每周自动清除/清空“temp”目录?不知道里面有什么文件。我只想清空目录。
【问题讨论】:
-
@MatteoTassinari 谢谢!
标签: php
假设,我有一个名为“temp”的目录,里面有很多自动生成的垃圾文件。如何使用 PHP 每周自动清除/清空“temp”目录?不知道里面有什么文件。我只想清空目录。
【问题讨论】:
标签: php
在 $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);
【讨论】:
您可以使用这样的代码 sn-p,如果您的应用程序位于基于 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
}
【讨论】:
首先你需要cron job 和php 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
【讨论】:
使用 cron 调用将删除整个文件夹的脚本,然后再次 mkdir。
【讨论】: