本文实例讲述了PHP实现图片自动清理的方法。分享给大家供大家参考。具体实现方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<?php
/**
* 图片清理计划程序,删除文件下两周没有访问的文件
*/
$sRootPath = dirname( __FILE__ );
//define(TIME_LINE ,"-7 day");
//删除几天没有访问图片的时间
$dir = $sRootPath .DIRECTORY_SEPARATOR. 'upload' ;
$iTimeLine = strtotime ( "-7 day" );
//$iTimeLine = time();
$sHandDate = date ( "Ymd" );
$sLogDir = dirname( __FILE__ ).DIRECTORY_SEPARATOR. 'Imglog' ;
$sLog = $sLogDir .DIRECTORY_SEPARATOR. $sHandDate . '.txt' ;
if (! file_exists ( $sLogDir )) mkdir ( $sLogDir , 0777,true);
_clearFile( $dir , $iTimeLine , $sLog );
$sEnd = 'AT' . "\\t" . date ( "Y-m-d H:i:s" ). "\\t" . 'EXEC OVER' . "\\n" ;
echo $sEnd ;
error_log ( $sEnd , 3, $sLog );
/**
* 清除文件操作,传入需要清除文件的路径
* @param unknown_type $sPath
*/
function _clearFile( $sPath , $iTimeLine , $sLog ){
if ( is_dir ( $sPath )){
$fp = opendir( $sPath );
while (!false == ( $fn = readdir( $fp ))){
if ( $fn == '.' || $fn == '..' ) continue ;
$sFilePath = $sPath .DIRECTORY_SEPARATOR. $fn ;
_clearFile( $sFilePath , $iTimeLine , $sLog );
}
} else {
if ( $sPath != '.' && $sPath != '..' ){
//. ..文件直接跳过,不处理
$iLastView = fileatime ( $sPath );
if ( $iLastView < $iTimeLine ){
if (@unlink( $sPath ) === true){
//echo date("Y-m-d H:i:s").'成功删除文件'.$sPath;
//file_put_contents($sLog,'success del file :'.$sPath."\\n", FILE_APPEND);
//exit;
$str = date ( "Y-m-d H:i:s" ). "\\t" . 'success del file :' . '[' . $sPath . ']' . "\\n" ;
error_log ( $str , 3, $sLog );
//exit;
}
}
}
}
}
?>
|
希望本文所述对大家的php程序设计有所帮助。