Скрипт бекапа баз данных

Рейтинг: 0Ответов: 1Опубликовано: 05.02.2015

Всем добрый день.

Недавно написал скрипт бекапа баз данных для своего сервера. Некоторое время он не работал из-за настроек сервера, но теперь заработал, но появилась другая проблема. Помогите ее решить.

Проблема в том, что бекап создается с ломаной кодировкой. Все русские символы становятся нечитабельными. Подскажите, что нужно добавить в код, чтобы исправить эту проблему?

Вот код:

$dblocation = "localhost";
$dbuser = "admin";
$dbpasswd = "12345";

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);

$user_mysql = 'admin';
$pass_mysql = '12345';

$tmp_path = $_SERVER['DOCUMENT_ROOT'].'/uploads/damp/';

function get_database_tables()
{
    $ret = array();
    $r = mysql_query('SHOW DATABASES');
    if (mysql_num_rows($r)>0)
    {
        while($row = mysql_fetch_array($r, MYSQL_NUM))
        {
            $ret[] = $row[0];
        }
    }
    return $ret;
}

$h=array();
$h=get_database_tables();
$vsego=count($h);

$exс=array('information_schema', 'mysql', 'performance_schema', 'phpmyadmin');

for ($x=0; $x < $vsego; $x++){
    $bd=$h[$x];
    #И сделаем их дамп
    if(!in_array($bd, $exс)){

        exec('mysqldump -u '.$user_mysql.' -p'.$pass_mysql.' '.$bd.' > ' . $tmp_path . $bd . '.sql');
    }
}

echo "<pre>";
print_r($h);
echo "</pre>";

Ответы

▲ 1Принят
exec('mysqldump -u '.$user_mysql.' -p'.$pass_mysql.' '.$bd.' > ' . $tmp_path . $bd . '.sql');

Заменить на

exec('mysqldump -u '.$user_mysql.' -p'.$pass_mysql.' '.$bd.' --default-character-set=utf8 > ' . $tmp_path . $bd . '.sql');