Polecony mi przez kogoś przykładowy skrypt do backupu bazy MySQL, który znajduje się
tutaj przerobiłem po swojemu - tak aby poddawał dane kompresji. Rezultat poniżej.
Jeśli ktoś znajdzie w nim jakieś ewidentne babole lub zwróci uwagę na coś, o czym zapomniałem, to będę wdzięczny za jakieś info. Skrypt się wykonuje, ale zbyt szybko toto nie działa...
Pozdrawiam,
K
<?php
//pomijam połączenie z bazą danych - oczywista rzecz.
$crlf = \"rn\";
$NazwaPliku = $time.\".txt.gz\";
$PlikArchiwum = gzopen(\"backupy/\".$NazwaPliku, \"wb9\");
gzwrite($PlikArchiwum, '#' . $crlf);
gzwrite($PlikArchiwum, '# Zrzut bazy danych' . $crlf);
gzwrite($PlikArchiwum, '# Moment wygenerowania: ' . $time . $crlf);
gzwrite($PlikArchiwum, '#' . $crlf . $crlf);
{
$table_name = $row[0];
gzwrite($PlikArchiwum, '#' . $crlf);
gzwrite($PlikArchiwum, '# Struktura tabeli ' . $table_name . $crlf);
gzwrite($PlikArchiwum, '#' . $crlf);
gzwrite($PlikArchiwum, 'DROP TABLE IF EXISTS ' . $table_name . ';' . $crlf);
gzwrite($PlikArchiwum, 'CREATE TABLE ' . $table_name . ' ( ' . $crlf);
$res2 = mysql_query('SHOW FIELDS FROM ' . $table_name); {
gzwrite($PlikArchiwum,' ');
gzwrite($PlikArchiwum, $fields['Field'] . ' ' . $fields['Type']);
if (!empty($fields['Default'])) {
gzwrite($PlikArchiwum, ' DEFAULT '' . $fields['Default'] . ''');
}
if ($fields['Null'] != 'Yes')
{
gzwrite($PlikArchiwum, ' NOT NULL');
}
if (!empty($fields['Extra'])) {
gzwrite($PlikArchiwum, ' ' . $fields['Extra']);
}
gzwrite($PlikArchiwum, ',' . $crlf);
$table_fields[] = $fields['Field'];
}
$index = '';
{
$kname = $keys['Key_name'];
if(($kname != 'PRIMARY') && ($keys['Non_unique'] == 0))
{
$kname = 'UNIQUE|' . $kname;
}
$index[$kname] = array(); $index[$kname][] = $keys['Column_name'];
}
while(list
($n, $columns) = @each($index)) {
if ($n == 'PRIMARY')
{
gzwrite
($PlikArchiwum, ' PRIMARY KEY (' . implode($columns, ', ') . ')'); }
elseif (substr($n, 0, 6) == 'UNIQUE') {
gzwrite
($PlikArchiwum, ' UNIQUE ' . substr($n, 7) . ' (' . implode($columns, ', ') . ')'); }
else
{
gzwrite
($PlikArchiwum, ' KEY ' . $n . ' (' . implode($columns, ', ') . ')'); }
gzwrite($PlikArchiwum, $crlf);
}
gzwrite($PlikArchiwum, ');' . $crlf);
gzwrite($PlikArchiwum, $crlf . $crlf);
gzwrite($PlikArchiwum, '#' . $crlf);
gzwrite($PlikArchiwum, '# Dane z tabeli ' . $table_name . $crlf);
gzwrite($PlikArchiwum, '#' . $crlf);
{
gzwrite
($PlikArchiwum, 'INSERT INTO ' . $table_name . ' (' . implode(', ', $table_fields) . ') VALUES(');
$field_count = count($table_fields); for ($i = 0; $i < $field_count; $i++)
{
$f_data[] .= ''' . $data[$i] . ''';
}
gzwrite
($PlikArchiwum, implode(', ', $f_data)); gzwrite($PlikArchiwum, ');' . $crlf);
}
gzwrite($PlikArchiwum, $crlf . $crlf);
}
gzclose($PlikArchiwum);
?>