PHP ZipArchive を介してボリューム内の圧縮パッケージを送受信するにはどうすればよいですか?
Web 開発では、送信のために大きなファイルまたは複数のファイルを圧縮パッケージにパッケージ化する必要がある場合があります。ただし、ネットワーク送信の制限により、圧縮パッケージ全体を一度に送受信できない場合があります。この問題を解決するには、PHP の ZipArchive クラスを使用して、ボリューム内の圧縮パッケージを送受信します。
まず、圧縮パッケージ インスタンスを作成し、いくつかの基本パラメーターを設定する必要があります。次に、addFile() メソッドを使用して、圧縮する必要があるファイルを圧縮パッケージに追加します。すべてのファイルを追加した後、split() メソッドを使用してアーカイブを複数のボリュームに分割します。次に、 renameIndex() メソッドを使用して、各ボリュームの名前を指定された命名規則に変更します。最後に、close() メソッドを使用して圧縮パッケージを閉じます。
以下はコード例です:
$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(); }
上記のコードは、最初に ZipArchive オブジェクトを作成し、圧縮パッケージのファイル名を「files.zip」として指定し、ボリューム サイズは 1MB です。 。次に、3 つのファイルが圧縮パッケージに追加されました。次に、split() メソッドを使用して圧縮パッケージを複数のボリュームに分割し、renameIndex() メソッドを使用して各ボリュームの名前を指定した命名規則に変更します。最後に、close() メソッドを使用して圧縮パッケージを閉じます。
受信側は、まず、受信したすべてのサブボリュームを完全な圧縮パッケージに統合する必要があります。これを実現するには、ZipArchive クラスが提供する merge() メソッドを使用します。次に、extractTo() メソッドを使用して、圧縮パッケージ内のファイルを指定したディレクトリに抽出します。
以下はコード例です:
$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); } }
上記のコードは、最初に ZipArchive オブジェクトを作成し、圧縮パッケージのファイル名を「files.zip」として指定し、ボリューム サイズは 1MB です。 。次に、glob() 関数を使用して、すべてのボリューム ファイルを取得します。次に、merge() メソッドを使用して、すべてのボリュームを完全な圧縮パッケージに統合します。最後に、extractTo() メソッドを使用して、圧縮パッケージ内のファイルを指定した出力ディレクトリに抽出します。解凍が完了したら、unlink() 関数を使用してすべてのボリューム ファイルを削除します。
上記のコード例では、PHP ZipArchive クラスを使用して、ボリューム内の圧縮パッケージを送受信できます。これにより、大きなファイル転送の制御と処理が向上し、転送効率と安定性が向上します。
以上がPHP ZipArchive を介してボリューム内の圧縮パッケージを送受信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。