Перейти к содержимому


× Быстрый вопрос
Пользователь месяца
dos1k dos1k 1-й за Май
Очков активности: 1 194 28 тем, 115 сообщений, 4 балла репутации
Сайт: dos1k.ru
ТОП самых активных за этот месяц
  • Фотография Olya23
    #1

    Olya23
    Очков активности: 1278 3 темы, 133 сообщения, 6 баллов репутации

  • Фотография Rodiola
    #2

    Rodiola (rukodelkovo.ru)
    Очков активности: 693 0 тем, 77 сообщений, 6 баллов репутации

  • Фотография FIvYUr
    #3

    FIvYUr (catblogger.ru)
    Очков активности: 198 0 тем, 44 сообщения, 3 балла репутации

  • Фотография agrx
    #4

    agrx (key-assort.ru)
    Очков активности: 103.5 0 тем, 23 сообщения, 3 балла репутации

  • Фотография maxnik
    #5

    maxnik (konovalovpavel.ru)
    Очков активности: 99 0 тем, 22 сообщения, 3 балла репутации

  • Фотография fedornabilkin
    #6

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 60 0 тем, 20 сообщений, 2 балла репутации

  • Фотография BLIK
    #7

    BLIK
    Очков активности: 54 Вне конкурса за определение пользователя месяца

  • Фотография re-search
    #8

    re-search
    Очков активности: 51 7 тем, 13 сообщений, 1 балл репутации

  • Фотография Artos
    #9

    Artos
    Очков активности: 45 0 тем, 10 сообщений, 3 балла репутации

  • Фотография Андрей WPMasterKZ
    #10

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 39 0 тем, 26 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 25.06.2019
  • Яндекс выдача: 24.06.2019
Топ 5 участников по репутации


Отправка бэкапа на емейл

#1 Axel

Axel
  • Неактивные
  • 3 сообщений
  • Репутация: 0
0

Отправлено 09 Июнь 2009 - 12:28

Всем дорого времени суток!

Наладил у себя на форуме бэкап через крон с помощью sypex dumper, теперь бэкапы БД делаются по расписанию без моего участия, но приходится в ручную скачивать дамп ;)
Очень нужно, чтобы созданный дамп сам отправлялся на емейл в аттаче. В нете много PHP скриптов позволяющих это делать, но чтото у меня с ними не заладилось, получилось только с одним
<?php
$hourdiff = "0";
$timeadjust = ($hourdiff * 60 * 60);
$melbdate = date("_Y-m-d_",time() + $timeadjust); //сегодняшняя дата
$aa = "DB_NAME"; //Имя файла дампа, до даты
$bb = ".sql.gz"; //Имя файла дампа, после даты
include "libmail.php"; //подключили файл libmail.php
$m = new Mail; //создали новый объект класса Mail
$m->From("admin@сайт.ru"); //задаем любой адрес отправителя
$m->To("получатель@почта.ru");//задаем адрес получателя
$m->Subject("Бэкап за $melbdate");//тема сообщения
$message = "Надеюсь я тебе не понадоблюсь";//формируем текст сообщения
$m->Body($mesage);//задаем текст сообщения
$m->Attach("$aa$melbdate$bb");//прикрепляем файл-архив
$m->Send(); //отправляем бэкап на мыло
echo ("Cron, привет!");
?>

Но вот когда скрипт запускается сервер сразу выдает, что недостаточно памяти (Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 12565719 bytes)
Памяти походу требует столько сколько весит незаархивированый дамп (Незаархивленый примерно 45мб, заархивированый в gzip почти 9мб).
Но наверняка есть решения этой проблемы. К сожалению я PHP не знаю, могу лишь интуитивно рыться (Впринципе видно из скрипта каким матом я вывел название файла аттача ;) ).

Огромная просьба помочь с решением ;)

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Июнь 2009 - 15:45

Axel, естественно в строке
$m->Attach("$aa$melbdate$bb");//прикрепляем файл-архив
вы крепите не архив. Вы же просто переименовали окончание, расширение, но никак не обработали ваши данные, чтобы они были в формате gzip.
gzcompress
Вот сжатие контента и его последующая печать
<?php
function print_gzipped_output()
{
	$HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
	if( headers_sent() )
		$encoding = false;
	else if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
		$encoding = 'x-gzip';
	else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false )
		$encoding = 'gzip';
	else
		$encoding = false;
	if( $encoding )
	{
		$contents = ob_get_clean();
		$_temp1 = strlen($contents);
		if ($_temp1 < 2048)	// no need to waste resources in compressing very little data
			print($contents);
		else
		{
			header('Content-Encoding: '.$encoding);
			print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
			$contents = gzcompress($contents, 9);
			$contents = substr($contents, 0, $_temp1);
			print($contents);
		}
	}
	else
		ob_end_flush();
}
?>

Можно изменить под свои нужды.
  • 0

#3 Axel

Axel
    Topic Starter
  • Неактивные
  • 3 сообщений
  • Репутация: 0

Отправлено 09 Июнь 2009 - 17:54

ZiTosS, благодарю за ответ, но к сожалению я не могу понять что там и как.
Файл который я креплю уже зажат в gzip или при аттаче таким способом он распаковывается?
Если Вам не трудно, не могли бы Вы показать как должен выглядеть итоговый скрипт отправляющий бэкап на емейл в формате gzip?
  • 0

#4 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Июнь 2009 - 01:00

Axel, так я не понял, вы крепите уже gzip или он у вас другого форматы изначально?
  • 0

#5 Axel

Axel
    Topic Starter
  • Неактивные
  • 3 сообщений
  • Репутация: 0

Отправлено 11 Июнь 2009 - 13:21

ZiTosS, да, я креплю сразу gzip.
У меня на кроне стоит Sypex Dumper который создает дамп базы сжимает его в gzip и кидает в папку. Все что нужно это уже готовый и сжатый в gzip дамп отправить на почту.
  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru