我想创建一个文件,并在必要的时间段后自动删除它。 我的代码是:
$timeForDelete=$_REQUEST['timeForDelete'];
$text=$_REQUEST["text"];
$filename = uniqid(rand(), true) . '.txt';
if($timeForDelete =="2"){
//how save text to file and auto delete file after one hour?
}
else{
$f=fopen($filename,'a');
fwrite($f,$text); //write to file
}
如果$ timeForDelete == 2:如何将文本保存到文件并在一小时后自动删除? 希望你能帮助解决这个问题。感谢。
答案 0 :(得分:3)
有多种方法可以执行您的请求。 我建议最快的方法是:
答案 1 :(得分:2)
让我试着给出一个cron运行的示例脚本。
http://php.net/manual/en/function.filemtime.php
不幸的是,在Linux系统上我们无法获取文件创建日期,因此fmtime
是我们最好的选择。有关详细信息,请阅读fmtime
下面的wiki文档。
注意:这只是一个简单的例子
列出目录中的所有文件:(/ path / to / your / script / yourscript.php)
//assuming files are stored in /path/to/your/script/myfiles
$path = realpath(dirname(__FILE__)) . '/myfiles';
$files = array_diff(scandir($path), ['.', '..']);
//assuming all your files are in $paths top level
foreach($files as $file){
//unix time
$ctime = fmtime($path . "/$file");
//basic math
if(time() > $ctime){
unlink($path . "/$file");
}
}
您的cron职位
如果您正在运行类似操作系统的Unix:
每5分钟运行一次。你可以重新配置
crontab -e
将其添加到crontab并保存:
#invoke the intepreter
*/5 * * * * php /path/to/your/script/yourscript.php
编辑:
或者,您可以将这些文件的上传时间保存在数据库中,以跟踪文件创建日期
答案 2 :(得分:0)
此代码100%有效
date_default_timezone_set('Asia/Kolkata');
$path = realpath(dirname(__FILE__)) . '\Register.php'; <'Enter Your delete file name'>
$creat_time = date("d-m-Y h:i:s",filemtime($path));
$endTime = strtotime("+1 year", strtotime($creat_time));
if(time()>$endTime){
unlink($path);
}