сравнение двух файлов времени Unix для удаления старых файлов - PullRequest
0 голосов
/ 21 марта 2011

Я использую приведенный ниже фрагмент кода, чтобы получить 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 голосов
/ 21 марта 2011

Если вы вызываете strtotime () для $ updated, я думаю, это уже не отметка времени UNIX.time () возвращает метку времени UNIX.

Если проверка не будет выглядеть следующим образом:

if(strtotime($modified) < $previous_day)

Таким образом, вы сравниваете метки времени UNIX и, учитывая, что $ item-> last_modified возвращает правильное значение, ваш код должен работать.

Если нет, убедитесь, что нет разницы во времени или часовом поясе между тем, что time () возвращает, и программным обеспечением, устанавливающим значение last_modified для ваших $ items (легко)проверить с некоторым отладочным выводом)

...