Вход Регистрация
Файл: sys/fnc/backup.php
Строк: 204
<?php

if (!isset($hard_process)) {
    
$q mysql_query("SELECT * FROM `cron` WHERE `id` = 'backup_mysql'");

    if (
mysql_num_rows($q) == 0) {
        
mysql_query("INSERT INTO `cron` (`id`, `time`) VALUES ('backup_mysql', '" time() . "')");
    }

    
$backup mysql_fetch_assoc($q);

    if (
preg_match('#^[a-z0-9_-.]+@[a-z0-9_-.]+$#iu'$set['mail_backup']) && ($backup['time'] == NULL || $backup['time'] < time() - 60 60 24)) {
        
mysql_query("UPDATE `cron` SET `time` = '" time() . "' WHERE `id` = 'backup_mysql'");
        
$hard_process true;
        
time_limit(600); // Ставим ограничение на 10 минут

        
@unlink("sys/tmp/MySQL.sql.gz");
        
$list_tables NULL;
        
$tab mysql_query('SHOW TABLES');
        
$fopen_mysql = @fopen("sys/tmp/MySQL.sql.gz"'a');

        @
fwrite($fopen_mysqlgzencode("SET CHARSET UTF8;rnSET NAMES UTF8;rnrn"9));
        @
fclose($fopen_mysql);

        while (
$tables mysql_fetch_array($tab)) {
            
$table $tables[0];

            if (
$table == 'visit_today') {
                continue;
            }

            
$sql "/* Создание таблицы `$table` */rn";
            
$res = @mysql_query("SHOW CREATE TABLE `$table`");
            
$row = @mysql_fetch_row($res);
            
$sql.=$row[1] . ";rnrn";
            
$c_ins 2000;
            
$num_row_all mysql_result(mysql_query("SELECT COUNT(*) FROM `$table`"), 0);
            
$start 0;

            if (
$num_row_all) {
                
$sql.="/* Данные таблицы `$table` */rn";
                
$table_keys = @implode("`, `", @array_keys(mysql_fetch_assoc(mysql_query("SELECT * FROM `$table` LIMIT 1"))));

                while (
$start $num_row_all) {
                    
$res mysql_query("SELECT * FROM `$table` LIMIT $start$c_ins");

                    if (
$num_row_all $c_ins) {
                        
$sql .= "/* блок записей $start - " . ($start $c_ins) . " */rn";
                    }

                    
$sql .= "INSERT INTO `$table` (`$table_keys`) VALUES ";
                    
$num_row mysql_num_rows($res);
                    
$counter 0;

                    while ((
$row = @mysql_fetch_assoc($res))) {
                        
$values = @array_values($row);

                        foreach (
$values as $k => $v) {
                            
$values[$k] = "'" mysql_real_escape_string(preg_replace("#(n|r){1,}#"'n'$v)) . "'";
//$values[$k]=$values[$k]?"'$values[$k]'":'null';
                        
}

                        
$values_string = @implode(', '$values);
                        
$counter++;
                        
$sql .= "($values_string)" . ($counter == $num_row ";rn" ', ');
                    }

                    
$start $start $c_ins;
                }
            } else {
                
$sql.="/* Таблица `$table` пуста */rn";
            }

            
$sql.="rnrn";


            
$fopen_mysql fopen("sys/tmp/MySQL.sql.gz"'a');
            
fwrite($fopen_mysqlgzencode($sql9));
            unset(
$sql);
            
fclose($fopen_mysql);
        }

        
$EOL "rn";
        
$subj 'Данные для восстановления сайта';
        
$bound "--" md5(uniqid(time()));

        
$headers "From: "DCMS BackUP" <autobackup@$_SERVER[HTTP_HOST]>$EOL";
        
$headers.="To: $set[mail_backup]$EOL";
        
$headers.="Subject: $subj$EOL";
        
$headers.="Mime-Version: 1.0$EOL";
        
$headers.="Content-Type: multipart/mixed; boundary="$bound"$EOL";

        
$body "--$bound$EOL";
        
$body.="Content-Type: text/html; charset="utf-8"$EOL";
        
$body.="Content-Transfer-Encoding: 8bit$EOL";
        
$body.=$EOL;

        
$body.="Автоматическая отправка BackUp базы данных<br />";
        
$body.="<b>$set[mysql_db_name].sql.gz</b> - сжатый SQL-файл базы данных <b>$set[mysql_db_name]</b><br />";
        
$body.="<b>settings.ini.gz</b> - сжатый файл настроек системы <b>sys/dat/settings.ini</b><br />";


        
$body.="$EOL--$bound$EOL";

        
$body.="Content-Type: application/x-gzip; name="$set[mysql_db_name].sql.gz"$EOL";
        
$body.="Content-Disposition: attachment; filename="$set[mysql_db_name].sql.gz"$EOL";
        
$body.="Content-Transfer-Encoding: Base64$EOL";
        
$body.=$EOL;
        
$body.=chunk_split(base64_encode(file_get_contents("sys/tmp/MySQL.sql.gz")));
        
unlink("sys/tmp/MySQL.sql.gz");


        
$body.="$EOL--$bound$EOL";
        
$body.="Content-Type: application/x-gzip; name="settings.ini.gz"$EOL";
        
$body.="Content-Disposition: attachment; filename="settings.ini.gz"$EOL";
        
$body.="Content-Transfer-Encoding: Base64$EOL";
        
$body.=$EOL;
        
$body.=chunk_split(base64_encode(gzencode(file_get_contents("sys/dat/settings.ini"), 9)));


        
$body.="$EOL--$bound$EOL";
        
$body.="Content-Type: application/x-gzip; name="update.files.ini.gz"$EOL";
        
$body.="Content-Disposition: attachment; filename="update.files.ini.gz"$EOL";
        
$body.="Content-Transfer-Encoding: Base64$EOL";
        
$body.=$EOL;
        
$body.=chunk_split(base64_encode(gzencode(file_get_contents("sys/dat/update.files.ini"), 9)));


        
$body.="$EOL--$bound$EOL";
        
$body.="Content-Type: application/x-gzip; name="menu.main.ini.gz"$EOL";
        
$body.="Content-Disposition: attachment; filename="menu.main.ini.gz"$EOL";
        
$body.="Content-Transfer-Encoding: Base64$EOL";
        
$body.=$EOL;
        
$body.=chunk_split(base64_encode(gzencode(file_get_contents("sys/dat/menu.main.ini"), 9)));


        
$body.="$EOL--$bound$EOL";
        
$body.="Content-Type: application/x-gzip; name="user.menu.ini.gz"$EOL";
        
$body.="Content-Disposition: attachment; filename="user.menu.ini.gz"$EOL";
        
$body.="Content-Transfer-Encoding: Base64$EOL";
        
$body.=$EOL;
        
$body.=chunk_split(base64_encode(gzencode(file_get_contents("sys/dat/user.menu.ini"), 9)));


        
$body.="$EOL--$bound--$EOL";
        
mail("$set[mail_backup]"'=?utf-8?B?' base64_encode($subj) . '?='$body$headers);
    }
}
Онлайн: 1
Реклама