我做了一个简单的脚本,允许用户上传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的强大命令,请正确验证路径。