ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
کد:
<?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');
?>
دوستان وقتی فایل مربوطه رو اجرا میکنیم فایل بک اپ دیتابیس به راحتی ایمیل میشه و به صورت صحیح
اما وقتی تو کرون جاب اجراش میکنیم فایل رو خالی میفرسته .
اگر دوستان میتونن کمک کنن ممنون میشم
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
سلام، سطح دسترسی فایلتون رو بررسی کنید. عموما این مشکل از این مورد هست.
در صورتی که برطرف نشد، از wget یا curl استفاده کنید.
موفق باشید.
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
دوست عزیز دستور کرون جاب رو که صحیح کار کرد رو برای منم بفرست بی زحمت.ممنونم.
- - - Updated - - -
الان خود فایل رو هم که اجرا میکنیم باز خالی هست داخل ایمیل.دلیلش چی هست؟
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
backup_db('localhost', '*****', '*******', '******');
مشخصات دیتابیس رو وارد کردید ؟
curl http://wwwdomain.com/file.php
این هم دستور
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
بله اطلاعات دیتابیس رو وارد کردم.اما اجرا که میکنم ایمیل میکنه ولی داخل فایل db_backup.sql خالی هست!!
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
من فایلم رو در روت قرار دادم
$my_path = $_SERVER['DOCUMENT_ROOT']."/";
اگر شما تو پوشه قرار دادید مسیر درست بهش بدید
الان من دقیقا همین فانکشن ها رو استفاده میکنم و خیلی تمییز دیتابیس رو بهم میده
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
جناب فایل من داخل روت نیستش.داخل فولدر file/host قرار دادم.چطوری باید آدرس دهی کنم؟
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
خدمت شما
نقل قول:
$my_path = $_SERVER['DOCUMENT_ROOT']."/file/host";
پاسخ : ارسال بک اپ دیتابیس به ایمیل توسط کرون جاب
نقل قول:
نوشته اصلی توسط
ruhy
خدمت شما
مسیردهی اشتباه هست دوست عزیز.فایل درست کار میکنه ها.چون تو روت میزارم درست میفرسته ایمیل رو.اما مجبورم نزارم تو روت باشه.میخوام داخل فایل فوق باشه.الان مثل دستور شما قرار دادم.اما خالیه بازم فاایلی که ارسال میکنه.