Home >Backend Development >PHP Tutorial >Two PHP database backup program codes_PHP tutorial
Xiaosheng collected two PHP database backup programs today. The functions that can be completed here are: 1. Back up the specified data table, 2. Package into a zip file, 3. Send to the specified email address, that’s all the basic functions
See how to use it below:
The code is as follows | Copy code | ||||
//Set email $options = array('email' => array('email1', 'email2'), 'folder' => './backup/', 'mysql' => array('localhost', 'user', 'password', 'db')); $b = new Backup($options); // Submit backup command if(isset($_POST['backup'])) { // Start backup $b->backupDB(); } // Display backup table $b->outputForm(); ?> |
Concrete class implementation:
The code is as follows | Copy code |
Backup completedDownload Backup'; } } /** * Send email function * @return */ protected function sendEmail() { // Read email address foreach($this->config['email'] AS $email) { $to = $email; $from = $this->config['email'][0]; $message_body = "The zip package contained in this email is a database backup"; $msep = strtoupper (md5 (uniqid (time ()))); // Set email header $header = "From: $fromrn" . "MIME-Version: 1.0rn" . "Content-Type: multipart/mixed; boundary=".$msep."rnrn" . "--$mseprn" . "Content-Type: text/plainrn" . "Content-Transfer-Encoding: 8bitrnrn" . $message_body . "rn"; // File name $dateiname = $this->datei; // Compressed package size $dateigroesse = filesize ($dateiname); // Read the compressed package $f = fopen ($dateiname, "r"); // Save to attachment $attached_file = fread ($f, $dateigroesse); // Close the compressed package fclose ($f); //Create an attachment $attachment = chunk_split (base64_encode ($attached_file)); // Set attachment header $header .= "--" . $msep . "rn" . "Content-Type: application/zip; name='Backup'rn" . "Content-Transfer-Encoding: base64rn" . "Content-Disposition: attachment; filename='Backup.zip'rn" . "Content-Description: Mysql Datenbank Backup im Anhangrnrn" . $attachment . "rn"; // Mark attachment end unknown $header .= "--$msep--"; // Email title $subject = "Database Backup"; //Sending emails requires enabling PHP support^^ if(mail($to, $subject, '', $header) == FALSE) { die("Unable to send email, please check your email address"); } echo " Email sent successfully ";} } /** * Create a compressed package of database backup and save it to the specified directory on the server * @return */ protected function createZIP() { // Folder permissions must be sufficient chmod($this->config['folder'], 0777); // Create compressed package $zip = new ZipArchive(); //Set the compressed package file name $this->datei = $this->config['folder'].$this->config['mysql'][3]."_" .date("j_F_Y_g_i_a").".zip"; // See if the compressed package can be opened if ($zip->open($this->datei, ZIPARCHIVE::CREATE)!==TRUE) { exit("Cannot open <".$this->datei.">n"); } //Put the dumped data into the compressed package $zip->addFromString("dump.sql", $this->dump); // Close the compressed package $zip->close(); // Check to see if the compressed package has been generated if(!file_exists($this->datei)) { die("Unable to generate compressed package"); } echo " Database backup compressed package successfully generated ";} /** * mysql dump函数 * @param object $dump * @return */ protected function createDUMP($dump) { $date = date("F j, Y, g:i a"); $header = << -- -- Host: {$_SERVER['HTTP_HOST']} -- Erstellungszeit: {$date} -- -- Datenbank: `{$this->config['mysql'][3]}` -- -------------------------------------------------- -------- HEADER; foreach($dump AS $name => $value) { $sql .= $name.$value; } $this->dump = $header.$sql; } /** * Generate interface function for selecting data table * @return */ public function outputForm() { // Select all $result = mysql_list_tables($this->config['mysql'][3]); $buffer = ' '; echo $buffer; } } ?> |
General database backup class
The code is as follows
|
Copy code | ||||