PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب



ruhy
August 7th, 2014, 20:27
<?php
function backup_db($host, $user, $pass, $name, $tables = '*') {
date_default_timezone_set('Asia/Tehran');

$return = '';

mysql_connect($host,$user,$pass) or die('Connection error');
mysql_select_db($name) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');

if($tables == '*') {
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
mysql_free_result($result);
}
else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}

foreach($tables as $table) {
$result = mysql_query('SELECT * FROM `'.$table.'`');
$num_fields = mysql_num_fields($result);
$return .= 'DROP TABLE IF EXISTS `'.$table.'`;'.PHP_EOL.PHP_EOL;
$row = mysql_fetch_row(mysql_query('SHOW CREATE TABLE `'.$table.'`'));
$return .= $row[1].';'.PHP_EOL.PHP_EOL;

for ($i = 0; $i < $num_fields; $i++) {
while($row = mysql_fetch_row($result)) {
$return.= 'INSERT INTO `'.$table.'` VALUES(';
for($j = 0; $j < $num_fields; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace('\n', '\\n', $row[$j]);
if (isset($row[$j])) {
$return .= '\''.$row[$j].'\'';
}
else {
$return .= '\'\'';
}
if ($j < ($num_fields - 1)) {
$return .= ',';
}
}
$return .= ');'.PHP_EOL;
}
}
$return .= PHP_EOL.PHP_EOL.PHP_EOL;
}
file_put_contents('db_backup.sql',$return);
}

backup_db('localhost', '*****', '*******', '******');
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $subject, $message) {
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$from_mail."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
if (mail($mailto, $subject, "", $header)) {
echo "mail send ... OK"; // or use booleans here
} else {
echo "mail send ... ERROR!";
}
}
$my_file = "db_backup.sql";
$my_path = $_SERVER['DOCUMENT_ROOT']."/";
$my_name = "raj";
$my_mail = "info@domain.com";
$my_subject = "Email Subject ";
$my_message = "Refer the attached file.";
$to_email="civilparto@yahoo.com";

mail_attachment($my_file, $my_path, $to_email, $my_mail, $my_name, $my_subject, $my_message);
unlink('db_backup.sql');
?>




دوستان وقتی فایل مربوطه رو اجرا میکنیم فایل بک اپ دیتابیس به راحتی ایمیل میشه و به صورت صحیح
اما وقتی تو کرون جاب اجراش میکنیم فایل رو خالی میفرسته .
اگر دوستان میتونن کمک کنن ممنون میشم

hamid.soltani92
August 7th, 2014, 20:29
سلام، سطح دسترسی فایلتون رو بررسی کنید. عموما این مشکل از این مورد هست.
در صورتی که برطرف نشد، از wget یا curl استفاده کنید.
موفق باشید.

ruhy
August 8th, 2014, 00:01
ممنون با کرل مشکلم حل شد

shandiz
August 8th, 2014, 01:25
دوست عزیز دستور کرون جاب رو که صحیح کار کرد رو برای منم بفرست بی زحمت.ممنونم.

- - - Updated - - -

الان خود فایل رو هم که اجرا میکنیم باز خالی هست داخل ایمیل.دلیلش چی هست؟

ruhy
August 8th, 2014, 10:25
backup_db('localhost', '*****', '*******', '******');

مشخصات دیتابیس رو وارد کردید ؟
curl http://wwwdomain.com/file.php
این هم دستور

shandiz
August 8th, 2014, 12:12
بله اطلاعات دیتابیس رو وارد کردم.اما اجرا که میکنم ایمیل میکنه ولی داخل فایل db_backup.sql خالی هست!!

ruhy
August 8th, 2014, 18:20
من فایلم رو در روت قرار دادم
$my_path = $_SERVER['DOCUMENT_ROOT']."/";

اگر شما تو پوشه قرار دادید مسیر درست بهش بدید
الان من دقیقا همین فانکشن ها رو استفاده میکنم و خیلی تمییز دیتابیس رو بهم میده

shandiz
August 9th, 2014, 00:23
جناب فایل من داخل روت نیستش.داخل فولدر file/host قرار دادم.چطوری باید آدرس دهی کنم؟

ruhy
August 9th, 2014, 14:31
خدمت شما


$my_path = $_SERVER['DOCUMENT_ROOT']."/file/host";

shandiz
August 9th, 2014, 14:44
خدمت شما
مسیردهی اشتباه هست دوست عزیز.فایل درست کار میکنه ها.چون تو روت میزارم درست میفرسته ایمیل رو.اما مجبورم نزارم تو روت باشه.میخوام داخل فایل فوق باشه.الان مثل دستور شما قرار دادم.اما خالیه بازم فاایلی که ارسال میکنه.

felfel
August 9th, 2014, 17:03
دوست عزیز یک آموزش می دهید کلا برای این کار!؟

ruhy
August 9th, 2014, 17:45
یه دونه اسلش در اخر مسیر به ادرس اضافه کنید

shandiz
August 9th, 2014, 21:11
دوست عزیز امتحان کردین که درست ایمپورت میشه دیتابیسی که بکاپ میده؟چون باید درست ایمپورت بشه خروجی که ارسال میکنه برای ما.

ruhy
August 9th, 2014, 22:58
برای من که کاملا درست کار میکنه هم از نظر ایمپورت هم از نظر بکاپ

ahmad19
August 10th, 2014, 13:55
دوستانی که موفق شدن امکان قراردادن آموزش هست آیا ؟

ruhy
August 10th, 2014, 22:49
متن کد بالا رو تو یه فایل php ذخیره کنید و ادرس ایمیل و دیگر موارد خواسته شده رو من جمله ادرس پوشه فایل رو بهش بدید و در قسمت کرون جاب هاستتون نمونه ادرس داده شده رو قرار بدید

به هر میزان فایل اجرا بشه بک اپ دیتابیس از هاستتون گرفته و به ایمیلتون ارسال میشه

bidari
August 16th, 2014, 16:11
یوزر نیم و پس دیتابیس و اینا رو کجا باید زد؟

ruhy
August 16th, 2014, 18:54
مشخصات دیتابیس در اینجا:
backup_db('localhost', '*****', '*******', '******');

مشخصات ارسال ایمیل :
$my_path = $_SERVER['DOCUMENT_ROOT']."/";
$my_name = "raj";
$my_mail = "info@domain.com";
$my_subject = "Email Subject ";
$my_message = "Refer the attached file.";
$to_email="civilparto@yahoo.com";

bidari
September 3rd, 2014, 14:17
مشخصات دیتابیس در اینجا:
Backup_db('localhost', '*****', '*******', '******');

مشخصات ارسال ایمیل :
$my_path = $_server['document_root']."/";
$my_name = "raj";
$my_mail = "info@domain.com";
$my_subject = "email subject ";
$my_message = "refer the attached file.";
$to_email="civilparto@yahoo.com";

یوزر و پس و اسم دیتابیس دققیا کجا باید باش.... :d

ms313
September 3rd, 2014, 16:01
یوزر و پس و اسم دیتابیس دققیا کجا باید باش.... :d



backup_db($host, $user, $pass, $name, $tables = '*')

ccirco
October 21st, 2014, 13:01
برای من هم جواب داد درست کار می کنه

ahmad19
October 21st, 2014, 14:37
برای من درست کار نکرد حتی اصلا ارسال نکرد

ruhy
October 21st, 2014, 14:55
باید ایمیل رو سرور و همچنین توابع مربوطه فعال باشند

ahmad19
October 21st, 2014, 15:54
خب توابع چیا هست ؟

ruhy
October 21st, 2014, 22:58
تابع mail
باید ارسال ایمیل در سرور هم فعال باشه

ahmad19
November 1st, 2014, 01:35
اون که فعاله
اما فک می کنم مشکل از حجم دیتابیس باشه
چون دیتابیسم بیش از 1 گیگ حجم داره

ruhy
November 1st, 2014, 14:21
پیوست ایمیل نباید بیشتر از 25 مگ باشه

mhiizadi
November 1st, 2014, 23:09
اون که فعاله
اما فک می کنم مشکل از حجم دیتابیس باشه
چون دیتابیسم بیش از 1 گیگ حجم داره
از remote upload در سرور دیگه استفاده کنید