php删除web服务器中指定目录下的指定格式的文件

2016年10月24日原创教程 建站历程1 5,513

今天还在写VipSystem Pro的授权部分,用户授权后,生成匹配该用户的唯一的php文件集合(在一个目录下),然后进行zip下所并弹出下载。文章源自狐狸影视城-https://fox-studio.net/31847.html

这个临时生成的zip文件存放在我指定的一个目录。每个用户授权不同的功能,都会产生一个唯一的zip压缩文件。用户多了,服务器会存放很多zip文件。这时候,就需要设置一个过期时间,删除这些文件。留给用户一个下载有效期。即能保证空间不被过多占用,也能保证授权文件不被恶意下载。文章源自狐狸影视城-https://fox-studio.net/31847.html

php删除web服务器中指定目录下的指定格式的文件文章源自狐狸影视城-https://fox-studio.net/31847.html

截图中的是生成的临时文件。文章源自狐狸影视城-https://fox-studio.net/31847.html

通过如下代码删除文章源自狐狸影视城-https://fox-studio.net/31847.html

<?php
/**
 * 名称:删除超过指定时间web服务器指定目录下,指定文件。
 * 时间:2016-10-24 20:24
 * 作者:千年骚狐
 */

/**
 * 获取目录下文件列表
 * $dir 为文件的绝对路径
 * $all 如果该目录下还有文件夹,是否进行搜索。默认true,搜索。
 */
function list_dir($dir,$all=true){
	$result = array();
	if (is_dir($dir)){ //目录存在
		$file_dir = scandir($dir); //返回指定目录中的文件和目录的数组。
		foreach($file_dir as $file){ //遍历数组中的文件和目录
		//iconv('gbk','utf-8',$file); //如果目录中存在中文名称,可以使用本条
			if ($file == '.' || $file == '..'){ //过滤掉当前目录'.'和上一级目录'..'
				continue;
			}
			elseif (is_dir($dir.$file) && $all==true){ //如果路径为目录,则继续遍历其中的文件以及目录
				$result = array_merge($result, list_dir($dir.$file.'/'));
			}
			else{ //如果路径为文件则加入输入数组
				array_push($result, $dir.$file);
			}
		}
	}
	return $result; //输出文件路径
}

/**
 * 删除超时的指定文件
 * $file_dir_array 是文件路径的数组
 * $file_type 指定要删除文件的文件格式
 * $expiration_time 设置超时时间,单位为分钟
 */
function delete_zip_file($file_dir_array,$file_type,$expiration_time){
	foreach($file_dir_array as $file_name){ //遍历数组
		if(is_file($file_name)){ //如果为文件
			$file_info = pathinfo($file_name); //返回路径的信息
			if($file_info['extension'] == $file_type){ //文件后缀为指定的$file_type
				$create_time = filectime($file_name); //获得文件创建时间
				$expiration_time = strtotime("+".$expiration_time." minutes",$create_time); //设置超时时间
				if($expiration_time < time()){ //创建的文件时间超过指定时间
					unlink($file_name); //删除该文件
				}
			}
		}
	}
}

/**
 * 调用方法
 * 比如,我想删除D:\phpStudy\WWW\web\wp-content\plugins\my_plugins\temp目录下,超过创建时间5分钟的zip文件。
 */

//定义路径
$dir = 'D:\phpStudy\WWW\web\wp-content\plugins\my_plugins\temp';

//定义是否搜索子级目录的文件,这里我不搜索
$all = false;

//获得定义路径下载文件目录数组
$file_dir_array = list_dir($dir,$all);

//定义要删除的文件格式
$file_type = 'zip';

//定义超时时间,单位:分
$expiration_time = '5';

//执行删除命令
delete_zip_file($file_dir_array,$file_type,$expiration_time);
?>

我觉得给这个插件做的授权系统,都可以独立出来一个授权软件了。其中还会生成对应每一个用户的独立的key文件。文章源自狐狸影视城-https://fox-studio.net/31847.html

php删除web服务器中指定目录下的指定格式的文件文章源自狐狸影视城-https://fox-studio.net/31847.html

这些是密文,而不是简单的加密所用特征码。他们是可以通过密钥翻译成字符串的。文章源自狐狸影视城-https://fox-studio.net/31847.html

感觉自己好高端,哈哈。文章源自狐狸影视城-https://fox-studio.net/31847.html

weinxin
千年骚狐
  • 本文由 发表于 2016年10月24日
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
评论:1   其中:访客  1   博主  0
    • 不亦乐乎
      不亦乐乎 0

      差了一个判断,要是没删除成功也是静悄悄的。

    匿名

    发表评论

    匿名网友 填写信息

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    确定

    取消