is_file أو file_exists في PHP
سؤال
أحتاج إلى التحقق مما إذا كان الملف موجودا على محرك الأقراص الصلبة في موقع محدد (مسار $. $ file_name).
وهو الفرق بين is_file()
و file_exists()
وظائف والتي هي أفضل / أسرع للاستخدام في PHP؟
المحلول
is_file()
سيعود false
إذا كان المسار المحدد يشير إلى دليل. file_exists()
سيعود true
إذا كان المسار المحدد يشير إلى ملف صالح أو الدليل. لذلك سيعتمد بالكامل على احتياجاتك. إذا أردت أن تعرف خاصة إذا كان ملف أم لا، استخدم is_file()
. وبعد خلاف ذلك، استخدم file_exists()
.
نصائح أخرى
is_file()
هو الأسرع، ولكن المعيار الحديث يظهر ذلك file_exists()
هو أسرع قليلا بالنسبة لي. لذلك أعتقد أن ذلك يعتمد على الخادم.
اختبار بلدي القياس:
benchmark('is_file');
benchmark('file_exists');
benchmark('is_readable');
function benchmark($funcName) {
$numCycles = 10000;
$time_start = microtime(true);
for ($i = 0; $i < $numCycles; $i++) {
clearstatcache();
$funcName('path/to/file.php'); // or 'path/to/file.php' instead of __FILE__
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "$funcName x $numCycles $time seconds <br>\n";
}
تحرير: Tivie شكرا على التعليق. تغيير عدد الدورات من 1000 إلى 10K. النتيجه هي:
عندما الملف موجود:
is_file × 10000 1.5651218891144 ثانية
file_exists x 10000 1.5016479492188 ثانية
is_readable × 10000 3.7882499694824 ثانية
عندما الملف غير موجود:
is_file × 10000 0.23920488357544 ثانية
file_exists × 10000 0.22103786468506 ثانية
is_readable x 10000 0.21929788589478 ثانية
تحرير: نقل clearstatcache ()؛ داخل الحلقة. شكرا cj دينيس.