साथ Unzipping बड़ी फ़ाइलों मैं इस तरह कोड के साथ PHP के साथ एक 14MB संग्रह अनज़िप करने के लिए कोशिश कर रहा हूँ:पीएचपी
$zip = zip_open("c:\kosmas.zip");
while ($zip_entry = zip_read($zip)) {
$fp = fopen("c:/unzip/import.xml", "w");
if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
fwrite($fp,"$buf");
zip_entry_close($zip_entry);
fclose($fp);
break;
}
zip_close($zip);
}
यह क्लासिक "Allowed memory size of blablabla bytes exhausted
" के साथ 128MB स्मृति सीमा के साथ मेरी स्थानीय होस्ट पर विफल रहता है। सर्वर पर, मुझे 16 एमबी सीमा मिली है, क्या ऐसा करने का एक बेहतर तरीका है ताकि मैं इस सीमा में फिट हो सकूं? मुझे नहीं लगता कि इसे 128 एमबी से अधिक स्मृति आवंटित क्यों किया गया है। अग्रिम में धन्यवाद।
समाधान: मैं 10kb हिस्सा, समस्या शिखर स्मृति उपयोग अर्नोउड 1.5MB के साथ हल में फ़ाइलों को पढ़ना शुरू किया।
$filename = 'c:\kosmas.zip';
$archive = zip_open($filename);
while($entry = zip_read($archive)){
$size = zip_entry_filesize($entry);
$name = zip_entry_name($entry);
$unzipped = fopen('c:/unzip/'.$name,'wb');
while($size > 0){
$chunkSize = ($size > 10240) ? 10240 : $size;
$size -= $chunkSize;
$chunk = zip_entry_read($entry, $chunkSize);
if($chunk !== false) fwrite($unzipped, $chunk);
}
fclose($unzipped);
}
ज़िप फ़ाइल का * असम्पीडित * आकार क्या है? –
कमांड लाइन टूल्स का उपयोग कर एक विकल्प है? –
असंपीड़ित आकार लगभग 110 एमबी है। दुर्भाग्यवश, कमांड लाइन का उपयोग करना एक विकल्प नहीं है। – cypher