2012-11-19 21 views
9

file_exists() okunduğunda bir dizine işaret ettiğinde dönüş yapabilirim. Sadece bir dosyanın çıkıp çıkmadığını kontrol etmenin en hızlı yolu nedir? Şu anda PHP dosya olup olmadığını kontrol edin ve dizin bulunmuyor

Ben:

/** 
* Check if the file exists. 
* 
* @return bool 
*/ 
public function exists() { 
    if(is_null($this->_file)) return false; 

    return (!is_dir($this->_file) && file_exists($this->_file)) ? true : false; 
} 

Ben dizin ve nasıl bahsediyor dosya PHP'de çıkışlar ama hiçbir şey iyi bu kontrol etmek olmadığını kontrol ilişkin mesajların çok gördük.

Bu yöntem, 1000 saniye olarak çağrılabilir, böylece mümkün olduğunca hızlı bir şekilde yapabilmem için.

+1

ait arayacak özel fonksiyon? –

cevap

21
Sen is_file fonksiyonu aradığınız

:

public function exists() { 
    return $this->_file !== null && is_file($this->_file); 
} 
+0

Belgelerden: "Not: PHP'nin tamsayı türü imzalandığından ve birçok platform 32 bit tamsayı kullandığından, bazı dosya sistemi işlevleri 2 GB'den büyük dosyalar için beklenmedik sonuçlar verebilir." Endişelenecek bir şey var mı? Zamanın% 99'u, hiçbir dosya bu boyutta bir boyuta erişemezse, –

+0

denetim dışı bir günlük dosyası da budur. Ayrıca bu, beni is_file http://php.net/manual/en/function.is-file.php#46845 –

+1

@John söylemek zor. * Bazı * *** beklenmedik sonuçlara dönebilir *** Bu bir sorun olduğu bir durumla karşılaşmadım. YMMV. – deceze

2
public function exists() { 
    return !is_dir($this->_file) && file_exists($this->_file); 
} 
1

Sen dosyası sadece için bu deneyebilirsiniz. Onun yerine file_exists fonksiyonu * sembolik bağ dosyalarına * için almak gerekenler sonuç

function custom_file_exists($filePath) 
    { 
      if((is_file($filePath))&&(file_exists($filePath))){ 
      return true; 
      } 
      return false; 
    } 
İlgili konular