मुझे यह जांचने की आवश्यकता है कि क्या एक निर्दिष्ट स्थान ($ पथ। $ file_name) पर HDD पर एक फ़ाइल है।
जो अंतर है is_file()
file_exists()
PHP में उपयोग करने के लिए और कार्य के बेहतर / तेज है?
मुझे यह जांचने की आवश्यकता है कि क्या एक निर्दिष्ट स्थान ($ पथ। $ file_name) पर HDD पर एक फ़ाइल है।
जो अंतर है 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 x 10000 1.5651218891144 सेकंड
file_exists x 10000 1.5016479492188 सेकंड
is_readable x 10000 3.7882499694824 सेकंड
जब फ़ाइल मौजूद नहीं है :
is_file x 10000 0.23920488357544 सेकंड
file_exists x 10000 0.22103786468506 सेकंड
is_readable x 10000 0.21929788589478 सेकंड
संपादित करें: स्थानांतरित किया गया क्लीयरस्टैचे (); लूप के अंदर। धन्यवाद सीजे डेनिस
is_file()
तेजी से पाया हैfile_exists()
। यदि आप जानते हैं कि यह एक फ़ाइल (और निर्देशिका नहीं) है, तो निश्चित रूप से इसके बजाय इसका उपयोग करें।
is_dir()
यह 20% से अधिक तेज़ी से निकलता है file_exists()
(जो यह नहीं है, btw), कि अगर आप केवल dirs के लिए जाँच कर रहे हैं तो एक महत्वपूर्ण अंतर हो सकता है ...
न तो।
अगर फ़ाइल मौजूद नहीं है तो is_file () सही वापस आ सकता है।
अगर फ़ाइल निर्देशिका है तो file_exists () सही वापस आ सकती है।
तो अगर यह एक फ़ाइल होने की जरूरत है और यह मौजूद है तो आप दोनों की जरूरत है।
गति यहाँ कोई फर्क नहीं पड़ता क्योंकि वे समान नहीं हैं। केवल एक का उपयोग करें यदि केवल एक फ़ंक्शन मायने रखता है और यह तेज होगा।
मुझे पता है कि यह पद पुराना है लेकिन इस कार्य के बीच का अंतर केवल उनके व्यवहार का नहीं है। यदि आप बड़ी फ़ाइल के अस्तित्व की जांच करने के लिए is_file () का उपयोग करते हैं, तो 2 से अधिक जाएं। आप हैरान हो जाएंगे। फाइल मौजूद नहीं है। :( लेकिन अगर आप file_exists () के साथ जांचते हैं, तो यह काम करता है।