比较两个unix时间文件以删除旧文件

时间:2011-03-20 23:02:29

标签: php datetime timestamp unix-timestamp

我使用下面的代码来获取我的云服务器上的timestamps个文件,然后删除任何超过一定年龄的文件。

现在,代码设置为删除超过10分钟的任何内容进行测试。

然而,它会删除所有内容,即使我上传了一些文件,然后在10秒后运行该脚本。

我有没有看到一些小问题?

    $auth->authenticate();

    //connect
    $conn = new CF_Connection($auth);

    //create a handle for the CLOUD FILES container we want to delete from
    $daily_dose = $conn->get_container('daily_dose');

    //delete the obeject 
    $daily_packages = $daily_dose->list_objects();
    //print_r($daily_packages);
    //$public_container = $conn->get_container("public");   

    //$file_age = 86400; // 1 day in seconds
    $file_age = 600; // 10 minutes

    echo 'current time: ';
    echo $current_time = time();
    echo '<br>';
    echo 'time offset: ';
    echo $previous_day = $current_time - $file_age;
    echo '<br>';

    foreach($daily_packages as $package)
    {   
        echo $item = $daily_dose->get_object($package);
        $modified = $item->last_modified;
        echo ' ' . $modified;
        echo ' -> ' . strtotime($modified);
        echo '<br>';

        //If the modified time of the file is less the current time - 1 day in seconds (older than 1 day) delete it
        if ( $modified < $previous_day )
        {
            //delete the file
            $daily_dose->delete_object($item);
        }
    }

1 个答案:

答案 0 :(得分:0)

如果你在$ modified上调用strtotime(),我猜它已经不是UNIX时间戳了。 time()确实返回UNIX时间戳。

那么检查不应该如下:

if(strtotime($modified) < $previous_day)

这样你就是在比较UNIX时间戳,并且假设$ item-&gt; last_modified返回正确的值,你的代码应该可以工作。

如果没有,请确保time()返回与软件设置$ items上的last_modified值之间没有时间或时区差异(易于检查某些调试输出)