我使用下面的代码来获取我的云服务器上的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);
}
}
答案 0 :(得分:0)
如果你在$ modified上调用strtotime(),我猜它已经不是UNIX时间戳了。 time()确实返回UNIX时间戳。
那么检查不应该如下:
if(strtotime($modified) < $previous_day)
这样你就是在比较UNIX时间戳,并且假设$ item-&gt; last_modified返回正确的值,你的代码应该可以工作。
如果没有,请确保time()返回与软件设置$ items上的last_modified值之间没有时间或时区差异(易于检查某些调试输出)