Archiving in PHP using Streams; jak zazipovat archiv pomocí streamu

Narazil jsem na tento skvělý článek a abych ho neztratil, rozhodl jsem se ho přilepit sem

https://www.sitepoint.com/performant-reading-big-files-php/

Jak vytvořit archiv - konzumuje mnoho operační paměti!

// from filters-1.php

$zip = new ZipArchive();
$filename = "filters-1.zip";

$zip->open($filename, ZipArchive::CREATE);
$zip->addFromString("shakespeare.txt", file_get_contents("shakespeare.txt"));
$zip->close();

require "memory.php";

Jak efektivně snížit náročnost na paměť s použitím filtru

Nevýhoda: archiv nepůjde otevří pomocí Windowsovského nástroje pro práci s archivem zip.

// from filters-2.php

$handle1 = fopen(
    "php://filter/zlib.deflate/resource=shakespeare.txt", "r"
);

$handle2 = fopen(
    "filters-2.deflated", "w"
);

stream_copy_to_stream($handle1, $handle2);

fclose($handle1);
fclose($handle2);

require "memory.php";
 

Jak takový archiv rozbalit?
 
file_get_contents(
    "php://filter/zlib.inflate/resource=filters-2.deflated"
);

Komentáře

Oblíbené příspěvky