2012-11-15 137 views
0

我想知道是否有使用腳本或其他選項的方式,我可以自動將文件從我的服務器刪除某個日期。從服務器上自動刪除文件?

我已經創建了一個AS3 eCard應用程序,通過這個應用程序,php腳本將一個* .txt文件寫入一個包含該消息等相關細節的文件夾中,並且想知道是否有可能在'n'刪除了一些方法來避免混淆網站?

PHP修訂:

<?php 

if ($handle = opendir('/myFolder/holdingFolder')) { 

while (false !== ($file = readdir($handle))) { 
    $filelastmodified = filemtime($file); 

    if((time() - $filelastmodified) > 14*24*3600) 
    { 
     unlink($file); 
    } 

} 

closedir($handle); 
} 
?> 

我仍然在學習PHP和將不勝感激,如果任何人有更多的經驗可以看看在這點我在正確的方向,如果是去了解正確的方式在創建14天后刪除文件夾中的文件?

如果是這樣,我的服務器是windows/Plesk,我是否需要任何特殊命令來運行它,以及您多久建議一次?

回答

1

根據你所說的,我認爲你最容易開始使用的是一個cron作業和一個php腳本。

編寫一個PHP腳本來循環檢查創建日期的文件並刪除舊文件。然後在cron作業上設置PHP腳本,該腳本可以按照您想要的任何時間表運行。

當然有1000種方法可以解決這個問題,但聽起來您已經知道PHP,而cron可以在任何* nix系統上使用。

Here is a link to a random Google result for Crontab info and usage.

+0

謝謝您的回覆,我會考慮它,現在我知道這個名字。我知道這是可能的,因爲我已經看到它在其他網站上實現,但是當你以前從未做過,不知道這些技術是你想要學習時找到它的一半的問題。 – esadude

+0

我剛剛添加了一些代碼,我認爲它們可能在正確的軌道上,如果您有機會看看,我會很感激任何反饋,因爲我不想每14天意外刪除服務器上的每個文件夾! – esadude

0

嘗試:

<?php 
$dir = '/path/to/files/'; 
$days = 3600 * 24 * 7; // 7 days 
if($handle = opendir($dir)) { 

    /* This is the correct way to loop over the directory. */ 
    while (false !== ($file = readdir($handle))) { 
     if (filemtime($dir.$file) <= time()-$days) { 
      unlink($dir.$file); 
     } 
    } 

    closedir($handle); 
} 

然後通過一個cron運行此腳本

+0

感謝大家,幫助+1只是沒有足夠的點來添加它,但作爲一個noob,作爲參考,它是一個使用Plesk的Windows服務器,所以也許任務調度程序可以處理類似的命令到上面的cron代碼,如果沒有我會考慮列出的PHP方法,出於好奇,這是一個更好的方法來做到這一點? – esadude

0

如果你有訪問的cron,那麼你不需要PHP - E,G,到一天一次....

23 4 * * * find /your/directory -iname \*.txt -mtime +3 -exec rm -f {} \; 

如果您沒有訪問cron,然後運行它作爲垃圾回收作爲關機功能。例如。 (大搖大擺偷凱爾哈德森的代碼,但我注意到,他甚至複製的評論from here;)

function gc_txt_files() 
{ 
    $dir = '/path/to/files/'; 
    $days = 3600 * 24 * 7; // 7 days 
    if($handle = opendir($dir)) { 
     /* This is the correct way to loop over the directory. */ 
     while (false !== ($file = readdir($handle))) { 
      if (filemtime($dir.$file) <= time()-$days) { 
       unlink($dir.$file); 
      } 
     } 
     closedir($handle); 
    } 
} 
if (17==rand(0,200)) { // adjust 200 depending on how frequently you want to clear out 
    register_shutdown_function('gc_txt_files'); 
} 
+0

分享是關懷,PHP文檔/參考是有原因的。 –

+0

文檔都很好,但是當你谷歌的東西你不是很確定,並看到20種不同的方式來解釋或覆蓋真正的差異,通常很高興聽到使用它們的人,並知道微妙之處或親和不同的方式。有許多技術和東西讓人像我一樣錯過了許多不同的方式。我儘可能多地學習,並儘可能地享受尋找自己的方式的挑戰,但我知道php因此對查詢感到厭倦,並且使用我不確定的方法來使用它,但我會冒着吃餅乾的風險。 ..Θ) – esadude

相關問題