[adminer-svn] SF.net SVN: adminer:[1036] trunk/adminer
Database management in a single PHP file
Brought to you by:
jakubvrana
From: <jak...@us...> - 2009-08-28 14:44:51
|
Revision: 1036 http://adminer.svn.sourceforge.net/adminer/?rev=1036&view=rev Author: jakubvrana Date: 2009-08-28 14:44:43 +0000 (Fri, 28 Aug 2009) Log Message: ----------- Bzip2 compression Modified Paths: -------------- trunk/adminer/dump.inc.php trunk/adminer/include/export.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/dump.inc.php =================================================================== --- trunk/adminer/dump.inc.php 2009-08-28 14:16:44 UTC (rev 1035) +++ trunk/adminer/dump.inc.php 2009-08-28 14:44:43 UTC (rev 1036) @@ -146,6 +146,7 @@ } } } + dump(); exit; } @@ -164,7 +165,7 @@ } echo "<tr><th>" . lang('Output') . "<td><input type='hidden' name='token' value='$token'>$dump_output\n"; // token is not needed but checked in bootstrap for all POST data echo "<tr><th>" . lang('Format') . "<td>$dump_format\n"; -echo "<tr><th>" . lang('Compression') . "<td>" . ($dump_compress ? $dump_compress : lang('None of the supported PHP extensions (%s) are available.', 'zlib')) . "\n"; +echo "<tr><th>" . lang('Compression') . "<td>" . ($dump_compress ? $dump_compress : lang('None of the supported PHP extensions (%s) are available.', 'zlib, bz2')) . "\n"; echo "<tr><th>" . lang('Database') . "<td><select name='db_style'>" . optionlist($db_style, (strlen($_GET["db"]) ? '' : 'CREATE')) . "</select>\n"; echo "<tr><th>" . lang('Tables') . "<td><select name='table_style'>" . optionlist($table_style, 'DROP+CREATE') . "</select>\n"; echo "<tr><th>" . lang('Data') . "<td><select name='data_style'>" . optionlist($data_style, 'INSERT') . "</select>\n"; Modified: trunk/adminer/include/export.inc.php =================================================================== --- trunk/adminer/include/export.inc.php 2009-08-28 14:16:44 UTC (rev 1035) +++ trunk/adminer/include/export.inc.php 2009-08-28 14:44:43 UTC (rev 1036) @@ -127,39 +127,47 @@ $s = "\n($s)"; if (!$buffer) { $buffer = $insert . $s; + } elseif (strlen($buffer) + 1 + strlen($s) < $max_packet) { // 1 - separator length + $buffer .= ",$s"; } else { - if (strlen($buffer) + 1 + strlen($s) < $max_packet) { // 1 - separator length - $buffer .= ",$s"; - } else { - dump("$buffer;\n"); - $buffer = $insert . $s; - } + $buffer .= ";\n"; + dump($buffer); + $buffer = $insert . $s; } } } } if ($_POST["format"] != "csv" && $style != "INSERT+UPDATE" && $buffer) { - dump("$buffer;\n"); + $buffer .= ";\n"; + dump($buffer); } } } } function dump_headers($identifier, $multi_table = false) { + $compress = $_POST["compress"]; $filename = (strlen($identifier) ? friendly_url($identifier) : "dump"); $ext = ($_POST["format"] == "sql" ? "sql" : ($multi_table ? "tar" : "csv")); // multiple CSV packed to TAR - header("Content-Type: " . ($_POST["compress"] == "gz" ? "application/x-gzip" : ($ext == "tar" ? "application/x-tar" : ($ext == "sql" || $_POST["output"] != "file" ? "text/plain" : "text/csv")) . "; charset=utf-8")); - if ($_POST["output"] == "file" || $_POST["compress"]) { - header("Content-Disposition: attachment; filename=$filename.$ext" . ($_POST["compress"] == "gz" ? ".gz" : "")); + header("Content-Type: " . + ($compress == "bz2" ? "application/x-bzip" : + ($compress == "gz" ? "application/x-gzip" : + ($ext == "tar" ? "application/x-tar" : + ($ext == "sql" || $_POST["output"] != "file" ? "text/plain" : "text/csv") . "; charset=utf-8" + )))); + if ($_POST["output"] == "file" || $compress) { + header("Content-Disposition: attachment; filename=$filename.$ext" . (ereg('[0-9a-z]', $compress) ? ".$compress" : "")); } return $ext; } $compress = array(); if (function_exists('gzencode')) { - $compress['gz'] = 'GZIP'; + $compress['gz'] = 'gzip'; } -// bzcompress can't be called repetitively, bzopen requires temporary file +if (function_exists('bzcompress')) { + $compress['bz2'] = 'bzip2'; +} // ZipArchive requires temporary file, ZIP can be created by gzcompress - see PEAR File_Archive $dump_output = "<select name='output'>" . optionlist(array('text' => lang('open'), 'file' => lang('save'))) . "</select>"; $dump_format = "<select name='format'>" . optionlist(array('sql' => 'SQL', 'csv' => 'CSV')) . "</select>"; Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-08-28 14:16:44 UTC (rev 1035) +++ trunk/adminer/include/functions.inc.php 2009-08-28 14:44:43 UTC (rev 1036) @@ -360,9 +360,18 @@ } } -function dump($string) { - if ($_POST["compress"] == "gz") { - echo gzencode($string); +function dump($string = null) { // null $string forces sending of buffer + static $buffer = ""; // used to improve compression and to allow GZ archives unpackable in Total Commander + if ($_POST["compress"]) { + $buffer .= $string; + if (!isset($string) || strlen($buffer) > 1e6) { + if ($_POST["compress"] == "bz2") { + echo bzcompress($buffer); // should not be called repeatedly but it would require whole buffer in memory or temporary file + } else { + echo gzencode($buffer); + } + $buffer = ""; + } } else { echo $string; } Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-08-28 14:16:44 UTC (rev 1035) +++ trunk/adminer/select.inc.php 2009-08-28 14:44:43 UTC (rev 1036) @@ -48,6 +48,7 @@ } dump_data($_GET["select"], "INSERT", implode(" UNION ALL ", $union)); } + dump(); exit; } if (!$adminer->selectEmailProcess($where)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |