İki işlevin de hızını karşılaştırmak ve ölçmek için bazı testler yaptım. is_file, dosya_exists'dan birkaç kat daha hızlı (her ikisi için de 10000 yineleme kullandım) görünüyor. PHP ya da işletim sisteminin bu işlevler için önbellek kullanıp kullanmadığını ya da HDD'ye her zaman erişip erişmediğini merak ediyorum. is_file/file_exists performansı ve önbellek
Bu kodu kullanılmış ... Ben hiçbir düşünüyorum, ama acaba:<?php
$time = microtime();
$time = explode(' ', $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
file_exists('/Applications/MAMP/htdocs/index.php');
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo 'PHP parsed this in ' .$totaltime. ' seconds.</br>';
$time = microtime();
$time = explode(" ", $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
is_file('/Applications/MAMP/htdocs/index.php');
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo 'PHP parsed this in ' .$totaltime. ' seconds.</br>';
?>
Sık sık bu döngüyü birçok kez çağırıyorsunuz (bu etki, istek zamanına hükmedecek)? Aksi halde, size bir performans sorununa yol açtığından emin olmadığınız sürece endişelenmeyeceğim ... Unutmayın ki 'Erken optimizasyon tüm kötülüklerin köküdür' ... Bir problem olduğunu bilene kadar anlamsal olarak daha iyi bir alternatif kullanın. ve sonra o zaman optimize et ve sadece o zaman ... – ircmaxell
Gerçekten, is_file() dosya_exists() 'den 10 kat daha hızlı! Sadece denedim ve doğru. – forthrin
Eğer ekleyebileceğimiz herhangi bir kişiye yardım ederse, o file_exists(), hem dizinler hem de dosyalar için geçerli olarak dönecektir, is_file() sadece bir dosya (ve tabii ki mevcutsa) doğruysa geri dönecektir. – aesede