avatar

Как сделать дамп всех таблиц MySQL на PHP и на хостинге без привелегии OUTFILE

Рейтинг 3.7 из 5. Голосов: 220
Den 7 лет назад
8
,

0


Ответы (8)

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
Как сделать дамп всех таблиц MySQL на PHP и на хостинге без привелегии OUTFILE
отправить
+ 0

Iriska
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений Девушкам форума
53 Mar 10
7 лет назад
CODE:
global $db_tables; ob_start(); require_once("config.php"); ob_end_clean(); //backup_db_tables(); $date = date("YmdHis"); $db = new DB; $db->connect(); $tables = "SHOW TABLES"; $res = mysql_query($tables) or die( "Ошибка при выполнении запроса: ".mysql_error() ); while( $table = mysql_fetch_row($res) ) { $fp = fopen( ABSPATH."_backup/".$table[0]."_".$date."_dump.sql", "a" ); if ( $fp ) { $query = "TRUNCATE TABLE `".$table[0]."`;"; fwrite ($fp, $query); $rows = 'SELECT * FROM `'.$table[0].'`'; $r = mysql_query($rows) or die("Ошибка при выполнении запроса: ".mysql_error()); while( $row = mysql_fetch_row($r) ) { $query = ""; foreach ( $row as $field ) { if ( is_null($field) ) $field = "NULL"; else $field = "'".mysql_escape_string( $field )."'"; if ( $query == "" ) $query = $field; else $query = $query.', '.$field; } $query = "INSERT INTO `".$table[0]."` VALUES (".$query.");"; fwrite ($fp, $query); } fclose ($fp);//получаем файл с дампом таблиц ABSPATH."_backup/".$table[0]."_".$date."_dump.sql" } }
отправить
+ 0

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
а если нужно запаковать в ZIP а потом архив дампа отправить по почте?
отправить
+ 0

Iriska
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений Девушкам форума
53 Mar 10
7 лет назад
CODE:
require_once('pclzip.lib.php'); global $db_tables; ob_start(); require_once("config.php"); ob_end_clean(); //backup_db_tables(); $date = date("YmdHis"); $date2 = date("Y-m-d-H-i"); // создание архива $archive = new PclZip(ABSPATH."_backup/".$date2.'.zip');$archive->create(ABSPATH."_backup/".'file.txt', PCLZIP_OPT_REMOVE_PATH, ABSPATH."_backup/"); $dfmail = "noreply@".str_replace('www.', '', $_SERVER['HTTP_HOST']); $mail = new PHPMailer(); // defaults to using php "mail()" $mail->CharSet = 'UTF-8'; $body = 'Автоматический backup системы. Для восстановления утерянных данных воспользуйтесь менеджером баз данных (например, phpMyAdmin) и импортируйте прикрепленные файлы. <b>Внимание! Импорт данных уничтожит текущие записи в таблицах.</b>'; $mail->AddReplyTo($dfmail,"name"); $mail->SetFrom($dfmail, 'name '); $mail->AddAddress("name @name.ua", "name "); $mail->Subject = "автоматический backup от ".date('Y-m-d H:i:s'); $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->MsgHTML($body); $db = new DB; $db->connect(); $tables = "SHOW TABLES"; $res = mysql_query($tables) or die( "Ошибка при выполнении запроса: ".mysql_error() ); while( $table = mysql_fetch_row($res) ) { $fp = fopen( ABSPATH."_backup/".$table[0]."_".$date."_dump.sql", "a" ); if ( $fp ) { $query = "TRUNCATE TABLE `".$table[0]."`;"; fwrite ($fp, $query); $rows = 'SELECT * FROM `'.$table[0].'`'; $r = mysql_query($rows) or die("Ошибка при выполнении запроса: ".mysql_error()); while( $row = mysql_fetch_row($r) ) { $query = ""; foreach ( $row as $field ) { if ( is_null($field) ) $field = "NULL"; else $field = "'".mysql_escape_string( $field )."'"; if ( $query == "" ) $query = $field; else $query = $query.', '.$field; } $query = "INSERT INTO `".$table[0]."` VALUES (".$query.");"; fwrite ($fp, $query); } fclose ($fp); if ( is_file(ABSPATH."_backup/".$table[0]."_".$date."_dump.sql") ) {$error_ar = $archive->add(ABSPATH."_backup/".$table[0]."_".$date."_dump.sql", PCLZIP_OPT_REMOVE_PATH, ABSPATH."_backup/"); if ($error_ar == 0) { echo ("<br>Error : '".$archive->errorInfo()."'"); } else {echo ("<br>file : '".ABSPATH."_backup/".$table[0]."_".$date."_dump.sql" ."' add to archive");} } else { echo "<br>error ! file -".ABSPATH."_backup/".$table[0]."_".$date."_dump.sql - not found";} if(unlink ( ABSPATH."_backup/".$table[0]."_".$date."_dump.sql")) { echo "<br> Delete ok: " .ABSPATH."_backup/".$table[0]."_".$date."_dump.sql"; } else{ echo "<br> Error delete file!".ABSPATH."_backup/".$table[0]."_".$date."_dump.sql"; } // раньше прикрепляли по одному- теперь все сразу прикрепляем и удаляем //$mail->AddAttachment(ABSPATH."_backup/".$table[0]."_".$date."_dump.sql"); } } $mail->AddAttachment(ABSPATH."_backup/".$date2.'.zip'); if(!$mail->Send()) { echo "<br> Backup Error: " . $mail->ErrorInfo; }else{ echo "<br> Backup sent!"; }
отправить
+ 0

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
как это можно автоматизаровать чтобы само отправляла в определенное время?
отправить
+ 0

Iriska
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений Девушкам форума
53 Mar 10
7 лет назад
добавить в cron ком***у, которая будет запускаться в определенное время/usr/local/bin/curl http://домен.ком/cron.php?token='334563464568'а содержимое cron.php обернуть в
PHP:
<?php if($_GET['token'] == '334563464568'){************************ }else{ die('<br> Permission denied!'); }?>
отправить
+ 0

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
что это за библиотеки? 'pclzip.lib.php' и $mail ?
отправить
+ 0

Iriska
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений Девушкам форума
53 Mar 10
7 лет назад
http://www.phpconcept.net/pclzip/pclzip-downloads
отправить
+ 0


Чтобы оставить комментарий войдите или зарегистрируйтесь