Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sende und empfange ich komprimierte Pakete in großen Mengen über PHP ZipArchive?

Wie sende und empfange ich komprimierte Pakete in großen Mengen über PHP ZipArchive?

WBOY
WBOYOriginal
2023-07-21 11:04:48841Durchsuche

Wie sende und empfange ich komprimierte Pakete in großen Mengen über PHP ZipArchive?

Bei der Webentwicklung ist es manchmal erforderlich, große Dateien oder mehrere Dateien zur Übertragung in komprimierte Pakete zu packen. Aufgrund von Einschränkungen bei der Netzwerkübertragung kann jedoch manchmal nicht das gesamte komprimierte Paket auf einmal gesendet oder empfangen werden. Um dieses Problem zu lösen, können wir die ZipArchive-Klasse von PHP verwenden, um komprimierte Pakete in Volumes zu senden und zu empfangen.

  1. Erstellen Sie ein komprimiertes Split-Volume-Paket

Zuerst müssen wir eine komprimierte Paketinstanz erstellen und einige grundlegende Parameter festlegen. Anschließend können wir die Methode addFile() verwenden, um die zu komprimierenden Dateien zum komprimierten Paket hinzuzufügen. Nachdem Sie alle Dateien hinzugefügt haben, verwenden Sie die Methode split(), um das Archiv in mehrere Volumes aufzuteilen. Anschließend können wir die Methode renameIndex() verwenden, um den Namen jedes Volumes in die angegebene Benennungsregel zu ändern. Verwenden Sie abschließend die Methode close(), um das komprimierte Paket zu schließen.

Das Folgende ist ein Codebeispiel:

$zip = new ZipArchive();
$zip_name = 'files.zip';
$chunk_size = 1024 * 1024; // 分卷大小,默认为1MB
$split_index = 1; // 第一个分卷的索引

if ($zip->open($zip_name, ZipArchive::CREATE) === TRUE) {
    $files = array('file1.jpg', 'file2.png', 'file3.txt');
    
    foreach ($files as $file) {
        $zip->addFile($file);
    }
    
    $zip->split($chunk_size);
    
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $zip->renameIndex($i, $split_index . '_' . $zip->getNameIndex($i));
        $split_index++;
    }
    
    $zip->close();
}

Der obige Code erstellt zunächst ein ZipArchive-Objekt, gibt den Dateinamen des komprimierten Pakets als „files.zip“ an und die Volumegröße beträgt 1 MB. Anschließend wurden dem komprimierten Paket drei Dateien hinzugefügt. Als nächstes verwenden Sie die Methode „split()“, um das komprimierte Paket in mehrere Volumes aufzuteilen, und verwenden Sie die Methode „renameIndex()“, um den Namen jedes Volumes in die angegebene Benennungsregel zu ändern. Schließen Sie abschließend das komprimierte Paket mit der Methode close().

  1. Empfangen des komprimierten Pakets in separaten Bänden

Der Empfänger muss zunächst alle empfangenen Bände in ein vollständiges komprimiertes Paket integrieren. Um dies zu erreichen, können wir die von der ZipArchive-Klasse bereitgestellte Methode merge() verwenden. Verwenden Sie dann die Methode extractTo(), um die Dateien im komprimierten Paket in das angegebene Verzeichnis zu extrahieren.

Das Folgende ist ein Codebeispiel:

$zip = new ZipArchive();
$zip_name = 'files.zip';
$chunk_size = 1024 * 1024; // 分卷大小,默认为1MB
$output_dir = 'output/';

// 获取所有分卷文件
$files = glob('*.zip');

if ($zip->open($zip_name, ZipArchive::CREATE) === TRUE) {
    foreach ($files as $file) {
        $zip->merge($file, $zip->numFiles);
    }
    
    $zip->extractTo($output_dir);
    $zip->close();

    // 删除所有分卷文件
    foreach ($files as $file) {
        unlink($file);
    }
}

Der obige Code erstellt zunächst ein ZipArchive-Objekt, gibt den Dateinamen des komprimierten Pakets als „files.zip“ an und die Volumegröße beträgt 1 MB. Verwenden Sie dann die Funktion glob(), um alle Volume-Dateien abzurufen. Verwenden Sie dann die Methode merge(), um alle Volumes in ein vollständiges komprimiertes Paket zu integrieren. Verwenden Sie abschließend die Methode extractTo(), um die Dateien im komprimierten Paket in das angegebene Ausgabeverzeichnis zu extrahieren. Nachdem die Dekomprimierung abgeschlossen ist, löschen Sie alle Volume-Dateien über die Funktion unlink().

Durch das obige Codebeispiel können wir die PHP-ZipArchive-Klasse verwenden, um komprimierte Pakete in großen Mengen zu senden und zu empfangen. Dies ermöglicht eine bessere Kontrolle und Verarbeitung großer Dateiübertragungen und verbessert die Übertragungseffizienz und -stabilität.

Das obige ist der detaillierte Inhalt vonWie sende und empfange ich komprimierte Pakete in großen Mengen über PHP ZipArchive?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn