-
August 7th, 2014, 20:27
#1
ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
کد:
<?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');
?>
دوستان وقتی فایل مربوطه رو اجرا میکنیم فایل بک اپ دیتابیس به راحتی ایمیل میشه و به صورت صحیح
اما وقتی تو کرون جاب اجراش میکنیم فایل رو خالی میفرسته .
اگر دوستان میتونن کمک کنن ممنون میشم
-
-
August 7th, 2014 20:27
# ADS
-
August 7th, 2014, 20:29
#2
عضو انجمن
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
سلام، سطح دسترسی فایلتون رو بررسی کنید. عموما این مشکل از این مورد هست.
در صورتی که برطرف نشد، از wget یا curl استفاده کنید.
موفق باشید.
-
تعداد تشکر ها از hamid.soltani92 به دلیل پست مفید
-
August 8th, 2014, 00:01
#3
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
-
-
August 8th, 2014, 01:25
#4
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
دوست عزیز دستور کرون جاب رو که صحیح کار کرد رو برای منم بفرست بی زحمت.ممنونم.
- - - Updated - - -
الان خود فایل رو هم که اجرا میکنیم باز خالی هست داخل ایمیل.دلیلش چی هست؟
-
-
August 8th, 2014, 10:25
#5
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
backup_db('localhost', '*****', '*******', '******');
مشخصات دیتابیس رو وارد کردید ؟
curl http://wwwdomain.com/file.php
این هم دستور
-
تعداد تشکر ها از ruhy به دلیل پست مفید
-
August 8th, 2014, 12:12
#6
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
بله اطلاعات دیتابیس رو وارد کردم.اما اجرا که میکنم ایمیل میکنه ولی داخل فایل db_backup.sql خالی هست!!
-
-
August 8th, 2014, 18:20
#7
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
من فایلم رو در روت قرار دادم
$my_path = $_SERVER['DOCUMENT_ROOT']."/";
اگر شما تو پوشه قرار دادید مسیر درست بهش بدید
الان من دقیقا همین فانکشن ها رو استفاده میکنم و خیلی تمییز دیتابیس رو بهم میده
-
-
August 9th, 2014, 00:23
#8
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
جناب فایل من داخل روت نیستش.داخل فولدر file/host قرار دادم.چطوری باید آدرس دهی کنم؟
-
-
August 9th, 2014, 14:31
#9
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
خدمت شما
$my_path = $_SERVER['DOCUMENT_ROOT']."/file/host";
-
-
August 9th, 2014, 14:44
#10
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب

نوشته اصلی توسط
ruhy
خدمت شما
مسیردهی اشتباه هست دوست عزیز.فایل درست کار میکنه ها.چون تو روت میزارم درست میفرسته ایمیل رو.اما مجبورم نزارم تو روت باشه.میخوام داخل فایل فوق باشه.الان مثل دستور شما قرار دادم.اما خالیه بازم فاایلی که ارسال میکنه.
-