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

Реферальная программа Мегаплана


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

#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

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Как проверить email-адрес на правильность?
  2. Скрипт не отправляет письмо на почту
  3. Вывод данных на странице сайта и отправка на почту
  4. Проблема с отправкой сообщения на email
  5. Отправка заполненной формы с сайта на e-mail

#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