2011-08-25 25 views
13

प्रदर्शन, फ़ाइल सूचक हैंडलिंग और स्मृति प्रबंधन के मामले मेंfile_get_contents और fread बीच क्या अंतर है

$contents = file_get_contents("folder/somefile.txt") 

और

$handle = fopen("folder/somefile.txt", "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 

के बीच क्या अंतर है?

और क्या यह सच है कि फ़ाइल_get_contents mmap का उपयोग करता है यदि ओएस इसे अनुमति देता है?

उत्तर

4

fread() बाइनरी डेटा पढ़ता है, file_get_contents() स्ट्रिंग के रूप डेटा देता है।

+0

मैं कोड के दो snipets की तुलना कर रहा हूँ, और मैं आप भी condider चाहते 'प्रदर्शन, फ़ाइल सूचक हैंडलिंग और स्मृति managing' –

+6

गलत -' fread के साथ() 'आप' b' के ध्वज के साथ फ़ाइल को खोलने चाहिए सुनिश्चित करें कि यह बाइनरी-सुरक्षित है, जबकि 'file_get_contents() 'हमेशा बाइनरी-सुरक्षित है – Crack

+0

मुझे आपकी टिप्पणी @ क्रैक पसंद है। व्यवस्थित – NullPointer

5

फ़्रेड की सीमा है कि आप कितने वर्ण पढ़ सकते हैं, और डेटा को पार्स करने के लिए यह बेहतर है।

file_get_contents के इनपुट पर कोई सीमा नहीं है (जो मुझे पता है)। इसका उपयोग बाहरी एपीआई एक्सेस और इस तरह के लिए किया जाता है।

+0

सही है कि मुझे 'फ्रेड' के साथ समस्या हो रही थी। यह फाइल से पढ़ने के दौरान डेटा को क्रमबद्ध करने के पात्रों को छोटा कर रहा था। – NullPointer

2

उत्सुक परिणाम! फ़ाइल_get_contents() फ़ंक्शन को फॉपेन के लिए एक रैपर माना जाता है, लेकिन फॉपेन और फ़्रेड का decoupling प्रदर्शन धीमा करने लगता है। http://www.ebrueggeman.com/blog/php_benchmarking_fopen

संबंधित मुद्दे