<![CDATA[Latest posts for the topic "Auto Backup DB và gửi vào email chọn trước với Cronjob"]]> /hvaonline/posts/list/23.html JForum - http://www.jforum.net Auto Backup DB và gửi vào email chọn trước với Cronjob Code:
<?php
/*
* Backup script on server.
*
* Runs on the server, called by Cron. Connects to the mySQL
* database and creates a backup file of the whole database.
* Saves to file in current directory.
*
* @author Cow <cow@invisionize.com>
* @version 0.2
* @date 18/08/2004
* @package Backup Server
* Upgraded Ver 2.0 (sending sql backup as attachment
* as email attachment, or send to a remote ftp server by
* @co-authors Cool Surfer<Coolsurfer@gmail.com> and
* Neagu Mihai<neagumihai@hotmail.com>
*/

set_time_limit(0);
$date = date("mdy-hia");
$dbserver = "localhost";
$dbuser = "user";
$dbpass = "pass";
$dbname = "database_name";
$file = "Blog-$date.sql.gz";
$gzip = TRUE;
$silent = TRUE;

function write($contents) {
if ($GLOBALS['gzip']) {
gzwrite($GLOBALS['fp'], $contents);
} else {
fwrite($GLOBALS['fp'], $contents);
}
}

mysql_connect ($dbserver, $dbuser, $dbpass);
mysql_select_db($dbname);

if ($gzip) {
$fp = gzopen($file, "w");
} else {
$fp = fopen($file, "w");
}

$tables = mysql_query ("SHOW TABLES");
while ($i = mysql_fetch_array($tables)) {
$i = $i['Tables_in_'.$dbname];

if (!$silent) {
echo "Backing up table ".$i."\n";
}

// Create DB code
$create = mysql_fetch_array(mysql_query ("SHOW CREATE TABLE ".$i));

write($create['Create Table'].";\n\n");

// DB Table content itself
$sql = mysql_query ("SELECT * FROM ".$i);
if (mysql_num_rows($sql)) {
while ($row = mysql_fetch_row($sql)) {
foreach ($row as $j => $k) {
$row[$j] = "'".mysql_escape_string($k)."'";
}

write("INSERT INTO $i VALUES(".implode(",", $row).");\n");
}
}
}

$gzip ? gzclose($fp) : fclose ($fp);

// Optional Options You May Optionally Configure

$use_gzip = "yes"; // Set to No if you don't want the files sent in .gz format
$remove_sql_file = "yes"; // Set this to yes if you want to remove the sql file after gzipping. Yes is recommended.
$remove_gzip_file = "no"; // Set this to yes if you want to delete the gzip file also. I recommend leaving it to "no"

// Configure the path that this script resides on your server.

$savepath = ""; // Full path to this directory. Do not use trailing slash!

$send_email = "yes"; /* Do you want this database backup sent to your email? Yes/No? If Yes, Fill out the next 2 lines */
$to = "email_can_gui_den@domain.com"; // Who to send the emails to, enter ur correct id.
$from = "email_gui_di@domain.com"; // Who should the emails be sent from?, may change it.

$senddate = date("j F Y");

$subject = "MySQL Database Backup - $senddate"; // Subject in the email to be sent.
$message = "Your MySQL database has been backed up and is attached to this email"; // Brief Message.

$use_ftp = "no"; // Do you want this database backup uploaded to an ftp server? Fill out the next 4 lines
$ftp_server = "ftp.diendanpascal.com"; // FTP hostname
$ftp_user_name = "mutsu"; // FTP username
$ftp_user_pass = "leauwater"; // FTP password
$ftp_path = "/"; // This is the path to upload on your ftp server!

// Do not Modify below this line! It will void your warranty <img src="http://bigball.info/wp-includes/images/smilies/icon_biggrin.gif" alt=":-D" class="wp-smiley"> !

$date = date("mdy-hia");
$filename = "$savepath/$dbname-$date.sql";

if($use_gzip=="yes"){
$filename2 = $file;
} else {
$filename2 = "$savepath/$dbname-$date.sql";
}

if($send_email == "yes" ){
$fileatt_type = filetype($filename2);
$fileatt_name = "".$dbname."-".$date."_sql.tar.gz";

$headers = "From: $from";

// Read the file to be attached ('rb' = read binary)
echo "Openning archive for attaching:".$filename2;
$file = fopen($filename2,'rb');
$data = fread($file,filesize($filename2));
fclose($file);

// Generate a boundary string
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Add the headers for a file attachment
$headers .= "\nMIME-Version: 1.0\n" ."Content-Type: multipart/mixed;\n" ." boundary=\"{$mime_boundary}\"";

// Add a multipart boundary above the plain message
$message = "This is a multi-part message in MIME format.\n\n"."--{$mime_boundary}\n" ."Content-Type: text/plain; charset=\"iso-8859-1\"\n" ."Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";

// Base64 encode the file data
$data = chunk_split(base64_encode($data));

// Add file attachment to the message
echo "|{$mime_boundary}|{$fileatt_type}|{$fileatt_name}| {$fileatt_name}|{$mime_boundary}|<BR>";
$message .= "--{$mime_boundary}\n" ."Content-Type: {$fileatt_type};\n" ." name=\"{$fileatt_name}\"\n"."Content-Disposition: attachment;\n" ." filename=\"{$fileatt_name}\"\n" ."Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" ."--{$mime_boundary}--\n";
//$message.= "--{$mime_boundary}\n" ."Content-Type: {$fileatt_type};\n" ." name=\"{$fileatt_name}\"\n" "Content-Disposition: attachment;\n" ." filename=\"{$fileatt_name}\"\n" ."Content-Transfer-Encoding: base64\n\n" .
// $data . "\n\n" ."--{$mime_boundary}--\n";

// Send the message
$ok = @mail($to, $subject, $message, $headers);
if ($ok) {
echo "<h4><center><bg color=black><font color= blue>Database backup created and sent! File name $filename2 </p>
Idea Conceived By coolsurfer@gmail.com
Programmer email: neagumihai@hotmail.com</p>
This is our first humble effort, pl report bugs, if U find any...</p>
Email me at <>coolsurfer@gmail.com nJoY!! <img src="http://bigball.info/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley">
</color></center></h4>";

} else {
echo "<h4><center>Mail could not be sent. Sorry!</center></h4>";
}
}

if($use_ftp == "yes"){
$ftpconnect = "ncftpput -u $ftp_user_name -p $ftp_user_pass -d debsender_ftplog.log -e dbsender_ftplog2.log -a -E -V $ftp_server $ftp_path $filename2";
shell_exec($ftpconnect);
echo "<h4><center>$filename2 Was created and uploaded to your FTP server!</center></h4>";

}

if($remove_gzip_file=="yes"){
exec("rm -r -f $filename2");
}
?>
Script này mình tìm được trên net. Các bạn thay thế user + pass + db name + email email mà DB sẽ được gửi đến + email gửi đi cho phù hợp. Save lại thành backup.php và sau đó up lên host test thử. http://domaincuaban.com/backup.php. Vào mail kiểm tra nếu thấy DB được gửi về là mọi chuyện đã Ok. Xong được 50%. Tiếp thao là phần Cronjob: Vì ko phải hosting nào cũng hỗ trợ nên đơn giản nhất là chúng ta dùng 1 cronjob của service nào đó trên net. Mình đang dùng http://cronless.com. Vào đó reg 1 acc xong login vào. Tiến hành setup cronjob. Chọn Create New Job
Nhận tên của Job vào (tùy ý) Nhập đường dẫn file backup (ở đây là http://domaincuaban.com/backup.php) Intraval chọn tùy ý (có thể là 2 lần 1 ngày, 1 lần 1 ngày, 10 phút 1 lần) theo mình nên chọn 1 ngày 1 lần là hợp lý. Start Date thì chọn Now (hoặc nhu cầu) Bấm Create Job. Thế là xong rồi. DB sẽ được backup hàng ngày và sẽ được gửi về mail của bạn. Khỏi sợ sự cố hosting nữa nhé (hack, suspend, error,...). Chúc thành công!]]>
/hvaonline/posts/list/29988.html#185004 /hvaonline/posts/list/29988.html#185004 GMT
Auto Backup DB và gửi vào email chọn trước với Cronjob /hvaonline/posts/list/29988.html#185012 /hvaonline/posts/list/29988.html#185012 GMT Auto Backup DB và gửi vào email chọn trước với Cronjob Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 15700421 bytes)  Kiểm tra lại file php.ini trên host đang dùng thì thấy memory_limit = 24 MB. Search thông báo lỗi trên google, có thử qua 4 cái thủ thuật này rồi, nhưng không cách nào xài được cả.
To fix the problem, there are 4 actions that you can take... Fix 1. If you have access to the php.ini configuration file on your server, you can simply edit the php.ini directive that set the amount of memory to allocate to your php scripts, you would need to edit the line that reads... memory_limit = 8M or memory_limit = 16M to... memory_limit = 24M or memory_limit = 32M (note: add the line to the php.ini file if it is missing) Editing the main php.ini file will probably require a restart of your webserver (apache?) Fix 2. If your server allows you to create a php.ini file in your webspace, you can create a simple text file called 'php.ini' with the line 'memory_limit = 24M' in it. you can upload this file to your webserver into the web document root, eg. public_html or ht_docs folder (where your php script is / html files etc) however it would be better to place it outside of your web document root for security reasons, so uploading it to the parent folder of your web document root folder would be better, and please remember to set the file permissions on it to read only (chmod 644) Fix 3. If you do not have access to php.ini but your webspace is able to handle ".htaccess" files then you should be able to set it by adding the following line to your .htaccess file (create a .htaccess file if you don't have one)... php_value memory_limit 24M The .htaccess file should be located in your web document root folder. (although it can also be located 'higher' up the server file system) Fix 4. At the top of your php script file you can add the following line right after the opening '< ? php' tag... ini_set("memory_limit","24M"); The above line is a built in php function which will allow you to set the memory size allocated to your php script. You will only need to use one of the Fixes, not all of them ! 
Nguồn http://www.codingforums.com/showthread.php?t=157152 Có bạn nào biết cách giải quyết khác không?]]>
/hvaonline/posts/list/29988.html#185515 /hvaonline/posts/list/29988.html#185515 GMT
Auto Backup DB và gửi vào email chọn trước với Cronjob /hvaonline/posts/list/29988.html#185574 /hvaonline/posts/list/29988.html#185574 GMT Auto Backup DB và gửi vào email chọn trước với Cronjob /hvaonline/posts/list/29988.html#185583 /hvaonline/posts/list/29988.html#185583 GMT