Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

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

Практика




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

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"

}
}

а если нужно запаковать в ZIP а потом архив дампа отправить по почте?


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) и импортируйте прикрепленные файлы. Внимание! Импорт данных уничтожит текущие записи в таблицах.';
$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 ("
Error : '".$archive->errorInfo()."'"); } else {echo ("
file : '".ABSPATH."_backup/".$table[0]."_".$date."_dump.sql" ."' add to archive");}

} else { echo "
error ! file -".ABSPATH."_backup/".$table[0]."_".$date."_dump.sql - not found";}



if(unlink ( ABSPATH."_backup/".$table[0]."_".$date."_dump.sql"))
{ echo "
Delete ok: " .ABSPATH."_backup/".$table[0]."_".$date."_dump.sql"; }
else{ echo "
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 "
Backup Error: " . $mail->ErrorInfo;
}else{
echo "
Backup sent!";
}

как это можно автоматизаровать чтобы само отправляла в определенное время?

добавить в cron команду, которая будет запускаться в определенное время

/usr/local/bin/curl http://домен.ком/cron.php?token='334563464568'


а содержимое cron.php обернуть в

if($_GET['token'] == '334563464568'){

************************


}else{
die('
Permission denied!');
}

?>

что это за библиотеки? 'pclzip.lib.php'
и $mail ?

http://www.phpconcept.net/pclzip/pclzip-downloads
создано: 2013-01-24
обновлено: 2021-01-11
363



Рейтиг 10 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Базы данных - MySql (Maria DB)

Термины: Базы данных - MySql (Maria DB)