TheUnknown Posted November 14, 2007 Share Posted November 14, 2007 I'm trying to get my db backed up every 24 ours and emailed to me Here is the code I set it up on a cron job and I get the email but the file is 0 bytes Any ideas? <?php require_once("backend/config.php"); $datestamp = date("Y-m-d"); $filename = "./backups/{$SITENAME}_SQL_Backup-{$datestamp}.sql.gz"; $to = "tracker-AT-torrentstorage.com"; $from = "[email protected]"; $subject = "Database Backup (".$datestamp.")"; $body = "Compressed MySQL Backup ({$SITENAME}_SQL_Backup-{$datestamp}.sql.gz) Attached."; class mime_mail { var $parts; var $to; var $from; var $headers; var $subject; var $body; function mime_mail() { $this->parts = array(); $this->to = ""; $this->from = ""; $this->subject = ""; $this->body = ""; $this->headers = ""; } function add_attachment($message, $name = "", $ctype ="application/octet-stream") { $this->parts[] = array ( "ctype" => $ctype, "message" => $message, "encode" => $encode, "name" => $name ); } function build_message($part) { $message = $part[ "message"]; $message = chunk_split(base64_encode($message)); $encoding = "base64"; return "Content-Type: ".$part[ "ctype"]. ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" : ""). "\nContent-Transfer-Encoding: $encoding\n\n$message\n"; } function build_multipart() { $boundary = "b".md5(uniqid(time())); $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary"; for($i = sizeof($this->parts)-1; $i >= 0; $i--) { $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary"; } return $multipart.= "--\n"; } function get_mail($complete = true) { $mime = ""; if (!empty($this->from)) $mime .= "From: ".$this->from. "\n"; if (!empty($this->headers)) $mime .= $this->headers. "\n"; if ($complete) { if (!empty($this->to)) { $mime .= "To: $this->to\n"; } if (!empty($this->subject)) { $mime .= "Subject: $this->subject\n"; } } if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain"); $mime .= "MIME-Version: 1.0\n".$this->build_multipart(); return $mime; } function send() { $mime = $this->get_mail(false); mail($this->to, $this->subject, "", $mime); } }; $command = "mysqldump -u $mysql_user --password=$mysql_pass $mysql_db | gzip > $filename"; $result = system($command); $data = implode("",file($filename)); $mail = new mime_mail; $content_type = "application/octet-stream"; $mail->from = $from; $mail->to = $to; $mail->subject = $subject; $mail->body = $body; $mail->add_attachment($data, "{$SITENAME}-".$datestamp.".sql.gz", $content_type); $mail->send(); ?> Link to comment https://forums.phpfreaks.com/topic/77328-backup-database-and-email-it-to-me/ Share on other sites More sharing options...
aschk Posted November 14, 2007 Share Posted November 14, 2007 Is that file being written (the gzip'd one), and if so, where? From skimming over i'm not convinced that it's being done properly. Link to comment https://forums.phpfreaks.com/topic/77328-backup-database-and-email-it-to-me/#findComment-391499 Share on other sites More sharing options...
TheUnknown Posted November 14, 2007 Author Share Posted November 14, 2007 I have no idea This seems to work just fine for other people that run this code Link to comment https://forums.phpfreaks.com/topic/77328-backup-database-and-email-it-to-me/#findComment-391500 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.