2011-03-20 97 views
0

我使用下面的代碼位來獲取我的雲服務器上的文件timestamps,然後刪除超過特定年齡的文件。比較兩個unix時間文件刪除舊文件

現在代碼被設置爲刪除超過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

你能還包括沒有時間或時區的差異()返回時,和什麼是「回聲」,它對我們也是有用的。 – alex 2011-03-20 23:10:55

+0

'$ item-> last_modified'究竟是什麼?事實上,它是否與time()返回的時間戳相同?假設你再使用一些代碼:'echo''。 $修改。 ' - >'。時間($修改)。 「;比較'。 $修改。 '與'。 $ previous_day。 '=>'。 ($修改<$前一天)。
;'或類似的東西;輸出是否亮起? – 2011-03-20 23:11:39

+0

'last_modified'是一個類變量,它會返回類似於'Sun,2011年3月20日23時09分36秒',然後我將變成一個'時間戳' – ian 2011-03-20 23:15:30

回答

0

如果你在$ modified上調用strtotime(),我猜它已經不是UNIX時間戳了。 time()確實返回UNIX時間戳。

不宜檢查,那麼,如下:

if(strtotime($modified) < $previous_day) 

您比較UNIX時間戳和這樣的話,考慮到$用品 - > LAST_MODIFIED返回正確的值,你的代碼應該工作。

如果不是,確保有什麼時候的軟件設置上的$項目LAST_MODIFIED值(易查了一些調試輸出)

+0

您可能會與時區... – ian 2011-03-20 23:16:57

+0

In你對自己的問題的評論,你表明'last_modified是一個類似的變量,將返回像太陽,2011年3月20日23時09分36秒'',所以我確信你將不得不現在改變你的'如果'條件。但確保沒有時區差異總是很好:) – 2011-03-20 23:26:09

+0

感謝威爾,它是兩個。我只是輸出'$ modified''timestamp'不把它放到一個變量中,然後比較它,我的雲服務器在倫敦時間,我的PHP服務器在DENVER時間,現在完美了! – ian 2011-03-20 23:36:41