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 = "noreply@torrentstorage.com"; $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(); ?> Quote Link to comment 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. Quote Link to comment 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.