public function buildGzipPackage($outputFile, $inputFiles, Compressor $compressor = NULL) { $this->buildPackage($outputFile, $inputFiles); if (isset($compressor)) { $compressor->compress($outputFile, $outputFile . '_min'); } $this->buildGzip($outputFile, $outputFile . '_min'); }
/** * @param string $rawFile * @dataProvider testFiles */ public function testCompress(string $rawFile) { $raw = file_get_contents($rawFile); $compressor = new Compressor(); $compressedFile = tempnam(sys_get_temp_dir(), 'squeeze-test-' . date('His') . '-compressed'); $decompressedFile = tempnam(sys_get_temp_dir(), 'squeeze-test-' . date('His') . '-decompressed'); $this->output('Compressing ' . $rawFile); $compressed = $compressor->compress($raw, (new Progress())->listen(function ($percentage) { static $lastBand = 0; $thisBand = floor($percentage * 10) / 10; if ($thisBand > $lastBand) { $this->output(round($thisBand * 100) . '%'); } $lastBand = $thisBand; })); file_put_contents($compressedFile, $compressed); $this->assertLessThan(filesize($rawFile), filesize($compressedFile)); $this->output('Compression ration ' . filesize($compressedFile) . '/' . filesize($rawFile) . ' = ' . round(filesize($compressedFile) / filesize($rawFile), 5) * 100 . '%'); $this->output('Decompressing'); $decompressed = $compressor->decompress($compressed); file_put_contents($decompressedFile, $decompressed); $this->assertEquals($raw, $decompressed); }
private $filename; private $total = array(); function __construct($filename) { if (file_exists($filename)) { $this->filename = $filename; } else { throw new Exception($filename . " does not exist!"); } } public function compress() { $w = fopen($this->filename, "r"); while (!feof($w)) { $this->total[] = gzencode(fgets($w, 4096), 5); } } public function saveFile($filename) { $s = gzopen($filename, "w"); foreach ($this->total as $key => $value) { gzputs($s, $key, 4096); } } } $m = new Melder(array("pdbc.php", "all.php", "xml.php")); $m->mergeFiles(); $m->saveFile("newShizzy.shizzle"); $c = new Compressor("newShizzy.shizzle"); $c->compress(); $c->saveFile("dsh");