程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中is_file不能替代file_exists的理由

PHP中is_file不能替代file_exists的理由

編輯:關於PHP編程

     首先要提出的問題是,is_file真的可以替代file_exists使用嗎?答案是否定的。為什麼?原因很簡單,is_file有緩存

    我們可以使用下面的代碼測試一下: 代碼如下:<?php         $filename = 'test.txt';       if (is_file($filename)) {           echo "$filename exists!n";       } else {           echo "$filename no exists!n";       }       sleep(10);      if (is_file($filename)) {           echo "$filename exists!n";       } else {           echo "$filename no exists!n";       } ?> 在運行測試代碼時,我們確保test.txt文件存在。在上面的代碼中,第一次使用is_file函數判斷文件是否存在,然後調用sleep函數睡眠10秒。在這10秒內,我們要把test.txt文件刪除。最後看看第二次調用is_file函數的結果。輸出結果如下: test.txt exists! test.txt exists! 嗯,你沒有看錯,兩次都是輸出“test.txt exists!”,這是為什麼呢?原因就是is_file有緩存。第一次調用is_file函數的時候,PHP會把文件的屬性(file stat)保存下來,當再次調用is_file的時候,如果文件名更第一次的一樣,那麼就會直接返回緩存。 那麼把is_file改為file_exists呢?我們可以把上面代碼的is_file函數改為file_exists函數,再次使用上面的測試方法測試。結果如下: test.txt exists! test.txt no exists! 第二次調用file_exists的時候返回文件不存在,這是因為file_exists函數沒有緩存,沒次調用file_exists的時候都會去磁盤搜索文件是否存在,所以第二次才會返回false。 說了那麼多,我只想說明is_file不能代替file_exists使用,如果你硬是覺得is_file的性能好,那我也沒辦法   
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved