PHP创建文件并在一小时,一周后删除它等

时间:2017-04-09 17:54:15

标签: php file

我想创建一个文件,并在必要的时间段后自动删除它。 我的代码是:

 $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:如何将文本保存到文件并在一小时后自动删除? 希望你能帮助解决这个问题。感谢。

3 个答案:

答案 0 :(得分:3)

有多种方法可以执行您的请求。 我建议最快的方法是:

  1. 使用可唯一标识的名称创建文件 需要删除(并根据您的问题,可能是名称中的时间戳,之后可以删除它们 - 一小时,一周等)
  2. 编写一个脚本,根据创建时间删除包含该唯一标识符的所有文件。
  3. 设置cronjob以每5分钟运行一次脚本并清理不需要的文件。

答案 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);
}