2012-02-18 121 views
1

我們需要刪除在Linux文件系統中創建的圖像。在路徑/home/user/img/(所有圖片)如何使用PHP腳本從文件夾中刪除圖像

我們嘗試過使用unlink(),但它需要很長時間才能刪除它。 有人可以幫助我們如何刪除圖像使用Linux命令必須通過PHP腳本傳遞。我認爲rm命令可以快速地做,但我很困惑如何使用

我們的腳本:

$locationIMG_p="/home/user/img/"; 
$location_p="/home/user/img/"; 

$opend=opendir($locationIMG_p); 

while(false!==($rf=readdir($opend))) 
{   
    unlink($locationIMG_p.$rf); 
}   

closedir($opend); 
+0

我看不到一個命令比取消鏈接你想要的東西更快。你可能會將圖像移動到一個臨時文件夾,並讓cronjob每隔一小時清除一次該文件夾,但我懷疑這是更快=/ – Relequestual 2012-02-18 11:15:14

回答

4

也許嘗試使用shell命令呢?

$cmd = "rm -f {$locationIMG_p}*"; exec($cmd);

但是使用這個時候你必須非常小心;)

//編輯 你應該路徑添加一些驗證和使用escapeshellarg

// EDIT2

而且您可以嘗試使用DirectoryIterator如下:

$di = new DirectoryIterator(path); 
foreach($di as $file) 
{ 
    if($file->isFile()) 
    { 
     unlink($file->getPathname()); 
    } 
} 
+0

+1,絕對快速和優秀的解決方案使用它在Linux主機(作爲Kiran ) – Alex 2012-02-18 11:16:07

+0

嗨巴託斯,謝謝,重播 – 2012-02-18 11:47:36

1
foreach(glob('/www/images/*.*') as $file) 
    if(is_file($file)) 
     @unlink($file); 

​​3210返回匹配通配符模式的文件列表。

unlink()刪除給定的文件名(如果成功與否,則返回)。

PHP函數名稱前的@強制PHP抑制函數錯誤。

通配符取決於您想要刪除的內容。 *.*適用於所有文件,*.jpg適用於jpg文件。請注意,glob也會返回目錄,所以如果您有一個名爲images.jpg的目錄,它也會返回它,因此導致unlink失敗,因爲它僅刪除文件。

is_file()確保您只嘗試刪除文件。

也讀this瞭解更多詳情...

相關問題