Ich bin mit einem Speicherbegrenzungsfehler in meinem WordPress-Plugin-Code konfrontiert.
Mein Code:Wenn ich eine ZIP-Datei eines Verzeichnisses mit einer großen Zip-Datei in PHP erstelle, stehe ich einem Speicherlimit gegenüber
function zipData($source, $destination) {
if (extension_loaded('zip')) {
if (file_exists($source)) {
$zip = new ZipArchive();
if ($zip -> open($destination, ZipArchive::CREATE) === TRUE) {
$source = realpath($source);
if (is_dir($source)) {
$iterator = new RecursiveDirectoryIterator($source);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
foreach ($files as $file) {
$file = realpath($file);
if (is_dir($file)) {
$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
} else if (is_file($file)) {
$zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
}
}
} else if (is_file($source)) {
$zip->addFromString(basename($source), file_get_contents($source));
}
}
return $zip->close();
}
}
return false;
}
ini_set('max_execution_time', 600);
ini_set('memory_limit','1024M');
zipData($upload_dir['basedir'], $upload_dir['basedir'].'/Jincowboy/JinBackupMedia'. time() .'.zip');
traf ich eine Speichergrenze, damit ich Google überprüft.
Ich habe festgestellt, dass Stream-Zip-Datei-Generierung benötigt wird, um das Speicherlimit zu vermeiden, aber ich konnte dies nicht bestätigen.
Ich möchte, dass mein Code dieses Speicherlimit umgeht und die Erstellung einer ZIP-Datei basierend auf einem Verzeichnis mit großen Dateien ermöglicht.
Wie kann ich das beheben?
Sie sollten das noch einmal versuchen, fügen Sie den Code ein, wählen Sie ihn aus und klicken Sie auf die Schaltfläche "Codebeispiel" ... – jeroen
Ich versuche große Dateiaufteilung. aber ich weiß nicht, dass es eine Zeitüberschreitung und einen Speicherausbau oder eine Speicherbegrenzung haben wird. – Jincowboy
Ich habe Speicherlimit und nicht genügend Speicher in der Funktion file_get_contents erlaubt. also habe ich das $ in = @fopen ($ file, "r"); while ($ buff = fgets ($ in, 4096)) { $ zip-> addFromString (str_replace ($ source. '/', '', $ File), $ buff); } fclose ($ datei); Aber es funktioniert nicht – Jincowboy