मेरे पास एक 1.3 जीबी पाठ फ़ाइल है जिसे मुझे PHP में कुछ जानकारी निकालने की आवश्यकता है। मैंने इसका शोध किया है और मुझे जो करने की ज़रूरत है, उसे करने के कुछ अलग-अलग तरीकों से आ गया है, लेकिन जैसा कि हमेशा थोड़ा सा स्पष्टीकरण के बाद होता है कि कौन सी विधि सबसे अच्छी होगी या यदि कोई बेहतर बेहतर है तो मुझे पता नहीं है?PHP का उपयोग कर एक 1.3 जीबी पाठ फ़ाइल से पाठ निकालने का सबसे अच्छा तरीका?
टेक्स्ट फ़ाइल में मुझे जो जानकारी चाहिए वह केवल प्रत्येक पंक्ति के पहले 40 वर्ण हैं, और फ़ाइल में लगभग 17 मिलियन लाइनें हैं। प्रत्येक पंक्ति से 40 वर्ण डेटाबेस में डाले जाएंगे।
मेरे पास विधियां नीचे हैं;
// REMOVE TIME LIMIT
set_time_limit(0);
// REMOVE MEMORY LIMIT
ini_set('memory_limit', '-1');
// OPEN FILE
$handle = @fopen('C:\Users\Carl\Downloads\test.txt', 'r');
if($handle) {
while(($buffer = fgets($handle)) !== false) {
$insert[] = substr($buffer, 0, 40);
}
if(!feof($handle)) {
// END OF FILE
}
fclose($handle);
}
ऊपर एक समय में प्रत्येक पंक्ति पढ़ सकते हैं और डेटा प्राप्त कर रहा है, मैं सभी डेटाबेस आवेषण लिया है, एक सौदे में एक बार में 50 आवेषण कर दस बार से अधिक।
अगली विधि वास्तव में ऊपर की तरह ही है लेकिन file()
को डेटा प्राप्त करने के लिए foreach
करने से पहले किसी सरणी में सभी लाइनों को स्टोर करने के लिए कॉल करना है? मुझे इस विधि के बारे में निश्चित नहीं है हालांकि सरणी के पास अनिवार्य रूप से 17 मिलियन से अधिक मूल्य होंगे।
एक और तरीका फ़ाइल का केवल एक हिस्सा निकालना होगा, फ़ाइल को अप्रयुक्त डेटा के साथ फिर से लिखना होगा, और उस भाग के बाद header
कॉल का उपयोग करके स्क्रिप्ट को याद किया जाएगा?
यह सबसे तेज़ और कुशल तरीके से करने के मामले में सबसे अच्छा तरीका क्या होगा? या क्या इस दृष्टिकोण के लिए एक बेहतर तरीका है जिसके बारे में मैंने सोचा है?
इसके अलावा मैं इस स्क्रिप्ट का उपयोग वैंप के साथ करने की योजना बना रहा हूं, लेकिन इसे ब्राउज़र में चलाने के दौरान परीक्षण समय के दौरान टाइमआउट के साथ समस्याएं उत्पन्न हुई हैं। क्या कोई तरीका है कि मैं स्क्रिप्ट को बिना पहुंच के चलाने के लिए निष्पादित कर सकता हूं एक ब्राउज़र के माध्यम से पेज?
अंतिम बिंदु के लिए, 'php path/to/script.php' स्क्रिप्ट निष्पादित करेगा। – sarnold
@ कर्नाल्ड क्या मैं कमांड लाइन से ऐसा करता हूं? धन्यवाद – Griff
हाँ, कमांड लाइन से। यदि आप स्क्रिप्ट की पहली पंक्ति पर '#!/Path/to/php' जोड़कर अक्सर इसे निष्पादित करना चाहते हैं तो आप इसे निष्पादन योग्य स्क्रिप्ट फ़ाइल भी बना सकते हैं और फिर' chmod 755 पथ/to/script' या 'chmod' चला रहे हैं 500' या आप जो भी उचित अनुमति चाहते हैं। – sarnold