2013-02-23 29 views
6

मैं कुछ फ़ोल्डर संरचना में कुछ स्ट्रिंग की खोज के लिए सबसे तेज़ दृष्टिकोण ढूंढ रहा हूं। मुझे पता है कि मैं फ़ाइल से सभी सामग्री file_get_contents के साथ प्राप्त कर सकता हूं, लेकिन मुझे यकीन नहीं है कि तेज़ है या नहीं। शायद पहले से ही कुछ समाधान है जो तेजी से काम करता है। मैं स्कैनर का उपयोग करने के बारे में सोच रहा था कि सभी फाइलें और file_get_contents को इसकी सामग्री को पढ़ने के लिए और स्ट्रिंग मौजूद है या नहीं।तारों के लिए फ़ोल्डर में सभी फ़ाइलों को खोजना

क्या आपको लगता है कि ऐसा करने के कुछ बेहतर तरीके हैं?

या शायद grep के साथ php exec का उपयोग करने का प्रयास कर रहे हैं?

अग्रिम धन्यवाद!

+0

https://github.com/skfaisal93/AnyWhereInFiles –

उत्तर

12

आपका दो विकल्प DirectoryIterator या glob हैं:

$string = 'something'; 

$dir = new DirectoryIterator('some_dir'); 
foreach ($dir as $file) { 
    $content = file_get_contents($file->getPathname()); 
    if (strpos($content, $string) !== false) { 
     // Bingo 
    } 
} 

$dir = 'some_dir'; 
foreach (glob("$dir/*") as $file) { 
    $content = file_get_contents("$dir/$file"); 
    if (strpos($content, $string) !== false) { 
     // Bingo 
    } 
} 

प्रदर्शन के संदर्भ में, आप हमेशा compute the real-time speed of your code कर सकते हैं या काफी आसानी से memory usage पता लगाना। बड़ी फ़ाइलों के लिए, आप an alternative से file_get_contents का उपयोग करना चाह सकते हैं।

+0

आपके समाधान फ़ाइल नाम जांचते हैं और मुझे फ़ाइल सामग्री की जांच करने की आवश्यकता है। क्या कोड में कोई बड़ा अंतर है? – bla0009

+0

अद्यतन उत्तर देखें – hohner