2014-05-23 51 views
-1

我想優化我的web應用程序,我不知道在哪裏可以獲得有關使用unlink命令或file_exists命令之間的速度差異的良好信息。在這裏看到:取消鏈接文件或檢查它是否存在是否更快?

@unlink(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".jpg"); 
@unlink(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".png"); 
@unlink(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".gif"); 

對戰

if (file_exists(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".jpg")) 
    @unlink(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".jpg"); 
if (file_exists(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".png")) 
    @unlink(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".png"); 
if (file_exists(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".gif")) 
    @unlink(graphics_url_root."/items/entry_img_".$_SESSION['userID'].".gif"); 
+0

你知道,你也可以寫一個函數。會看起來不那麼凌亂:)。順便說一句,我真的不認爲這是什麼減慢你的系統。你應該首先找到瓶頸,並相應地進行優化。 – kapa

+1

檢查文件是否存在之前解除鏈接文件是正確的方式來編碼...與你不必禁止警告以及 –

+0

Sudhir,似乎有一些分歧。下面的Barmar表明,文件存在檢查內置於取消鏈接,並表示它更快。 –

回答

2

它的速度更快,只是取消鏈接。這是一個系統調用而不是兩個。內核中實現unlink的代碼必須先測試該文件是否存在,因此您只需複製該代碼即可。

使用@unlink()的問題是,您不會收到其他類型的錯誤(如權限問題)的通知。所以如果你使用file_exists()檢查,你不應該壓制錯誤。