我正在构建一个在linux机器上使用PHP的网站。客户端可以上传我移动到永久位置的文件。显然,服务器不能永远包含文件。
我正在考虑使用一个可以删除超过几个小时的文件的脚本。
我该如何做到这一点?
谢谢,
tzvi。
答案 0 :(得分:2)
两种可能的解决方案:
opendir()
/ readdir()
/ closedir()
和filemtime()
。DirectoryIterator
或RecursiveDirectoryIterator
和SplFileInfo::getMTime()
。
第二个想法可能比第一个好:
请注意,第一个解决方案可以增强很多:
2011-04-10-10
,2011-04-11
,2011-04-10-12
,...) 有了它,无需搜索文件:只搜索几个目录。
答案 1 :(得分:0)
如果您具有对服务器的shell访问权限,则可以使用调用(ba)sh脚本的cron作业来根据时间查找和删除文件。以下脚本在/ public_html / YOUR-FOLDER文件夹中以递归方式查找过去24小时上传的文件并删除它们
#!/bin/bash
find /public_html/YOUR-FOLDER -type f -mtime +1 -exec rm {} \;
另一方面,如果为每个上传的文件保留数据库记录,还可以使用调用php文件的cron作业根据时间戳删除文件
答案 2 :(得分:0)
如果您想以PHP方式执行,我认为您可以测试下面的代码。 filePath可以是保存文件的永久位置。您可以根据自己的要求修改时间。
foreach(glob($filePath . '*') as $filename)
{
if((filemtime($filename) + 2 * 24 * 60 * 60) < time())
unlink($filename);
}
并在cron作业中使用它来删除特定时间。
答案 3 :(得分:0)
您可以创建一个cron job
,它将每小时执行一次,在cron job
中,您将在创建文件时检查timestamps
个文件,并根据您可以移动的文件你的文件到一些备份文件夹。您可以在cron job
或PHP
中撰写shell script
。