PHP文件上传24小时后删除


PHP Deleting a file 24 hours after being uploaded

我做了一个简单的脚本,允许用户上传html文件到我服务器上的web目录。但是,我希望每个文件在我的服务器上存在24小时后被删除。每个文件24小时,而不是整个目录24小时。这是我的代码到目前为止…谢谢你的帮助。:)

<?php 
 $target = "users/"; 
 $target = $target . basename( $_FILES['uploaded']['name']) ; 
 $ok=1; 
 if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)
 && ($_FILES["uploaded"]["type"] == "html")) 
 {
 echo "File: " . $_FILES["uploaded"]["name"] . "<br />";
 echo "Type: " . $_FILES["uploaded"]["type"] . "<br />";
 echo "Size: " . ($_FILES["uploaded"]["size"] / 1024) . " Kb<br />";
 echo "Location: /users/" . $_FILES["uploaded"]["name"]; 
 } 
 else {
 echo "Sorry, " . $_FILES["uploaded"]["name"] . " is not a valid HTML document. Please try again.";
 unlink . $_FILES["uploaded"]["name"];
 }
 ?> 

使用Cron每10分钟执行一次这个脚本(最好是30或60分钟)

$Time=time();
foreach(glob('/users/*') as $file){
    if(filemtime($file)+60*60*24<$Time){
        unlink($file);
    }
}

不完全证明,但它给了一个想法…

foreach(glob("/users/YOUR_USER/*") as $file) {
   $file = "/users/YOUR_USER/".$file;
   if ((time() - filectime($file)) >= 86400) {
      // delete me
   }
}

如果你使用的是Windows服务器,那么使用Windows Scheduler运行批处理文件:批处理文件删除超过N天的文件

在脚本末尾包含以下脚本。不要忘记用正确的路径替换/var/www/uploads/。否则,所有文件将在不同的位置被删除。

$files=shell_exec('find /var/www/uploads/ -mmin +1440');
$file = explode("'n",$files);
if(isset($file) && is_array($file))
{
    foreach($file as $val)
    {
        @unlink($val);
    }
}

以上代码将在基于Linux/UNIX的主机上运行。

  • "shell_exec"将执行linux命令并返回输出
  • "find - min -1440"正在查找超过1天或1440的文件分钟
  • 第一行"/var/www/uploads/"路径需要替换为full目录路径
  • 取消链接有"@"符号,以避免警告,如果文件不存在。
  • 由于这是基于linux的强大命令,请正确验证路径。