سلام و خسته نباشید
تو یه پروژه ای کار میکنم که پک آپ گیری از دیتابیس خیلی واسشون مهمه.
یعنی دوست دارن سیستم روزانه واسشون پک آپ بگیره.
ب نظرتون بهترین کار چیه؟
من ی دکمه بزارم که هرموقع که دلشون خواست از دیتابیس بک آپ بگیرن یا اینکه برنامه ای بنویسم که روزانه به طور خودکار بک آپ بدهد.
و سوال دیگه ای که دارم اینه:
برای بک آپ گرفتن از دیتابیس در مای اسکیوال وارد phpmyadmin میشیم بعدش دیتابیس مورد نظرمون رو انتخاب میکنیم و روی دکمه export کلیک میکنیم و از اون بک آپ میگیریم.
حالا من میخوام که امر بک آپ گیری به کمک خود پی اچ پی صورت بگیره و خود سیستم به طور خود کار پک آپ بده:
چون کاربران معمولی دیگه phpmyadmin رو نمیشناسن.
حالا خواستم ببینم آیا میشه با پی اچ پی از دیتابیس بک آپ گرفت و هرموقع که این بکاپ رو خواستم وارد phpmyadmin کنم و استفاده کنم.
یعنی منظورم اینه که بک آپی که میگیرم مثل بک آپ خود phpmyadmin باشه و هرموقع که خواستم بتونم ازش استفاده کنم.
خیلی ممنون
ب نظرتون برای بک آپ گیری مداوم از چ روش هایی استفاده کنم(یعنی از چ قائده های استفاده کنم)؟
خیلی ممنون
من بعد از سرچ به این کد رسیدم.
$url=$_SERVER["MYSQL_HOME"];
system("$url\mysqldump --user=root --password= --host=localhost res > backup.sql");
ولی این کد هم کار نمیکنه.
شک نکن که داری اشتباهی میکنی. این res اسم دیتابیس شماست درست نوشتی؟
(08-08-1394، 10:14 ق.ظ)راوندی نوشته: [ -> ]شک نکن که داری اشتباهی میکنی. این res اسم دیتابیس شماست درست نوشتی؟
به تصویر ی نگا بندازید.
من میخوام از این دیتابیس بک آپ بگیرم.
ممنون
سلام به این تصویر ی نگا بندازید.
من میخوام ی چنین چیزی درست کنم.
خودم هرموقع بخوام از دیتابیس بک آپ بگیرم مثل تصویر بالا عمل میکنم.
ولی
چون کاربران معمولی دیگه phpmyadmin رو نمیشناسن:
میخوام کدی بنویسم که کاربران در داخل برنامه با زدن یک دکمه بتونن از دیتابیس بکآپ بگیرن.
دقیقا میخوام همین عمل تو خود php و در داخل برنامه خودم انجام بشه.
ممنون
این کلاس رو از نت پیدا کردم و کارمو راه انداخت.
<?php
error_reporting(E_ALL);
/* Define database parameters here */
define("DB_USER", 'root');
define("DB_PASSWORD", '');
define("DB_NAME", 'res');
define("DB_HOST", 'localhost');
define("OUTPUT_DIR", 'db'); // Folder / Directory Name
define("TABLES",'*');
/* Instantiate Backup_Database and perform backup */
$backupDatabase = new Backup_Database(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$status = $backupDatabase->backupTables(TABLES, OUTPUT_DIR) ? 'OK' : 'KO';
//echo "Backup result: " . $status . " - By Irshad Khan";
/* The Backup_Database class */
class Backup_Database {
/* Host where database is located */
var $host = 'localhost';
var $username = 'root';
var $passwd = '';
var $dbName = 'res';
var $charset = '';
/* Constructor initializes database */
function Backup_Database($host, $username, $passwd, $dbName, $charset = 'utf8') {
$this->host = $host;
$this->username = $username;
$this->passwd = $passwd;
$this->dbName = $dbName;
$this->charset = $charset;
$this->initializeDatabase();
}
protected function initializeDatabase() {
$conn = @mysql_connect($this->host, $this->username, $this->passwd); // Ik Added @ to Hide PDO Error Message
mysql_select_db($this->dbName, $conn);
if (!mysql_set_charset($this->charset, $conn)) {
mysql_query('SET NAMES ' . $this->charset);
}
}
/* Backup the whole database or just some tables Use '*' for whole database or 'table1 table2 table3...' @param string $tables */
public function backupTables($tables = '*', $outputDir = '.') {
try {
/* Tables to export */
if ($tables == '*') {
$tables = array();
$result = mysql_query('SHOW TABLES');
while ($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
} else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
$sql = 'CREATE DATABASE IF NOT EXISTS ' . $this->dbName . ";nn";
$sql .= 'USE ' . $this->dbName . ";nn";
/* Iterate tables */
foreach ($tables as $table) {
//echo "Backing up " . $table . " table...";
$result = mysql_query('SELECT * FROM ' . $table);
$numFields = mysql_num_fields($result);
$sql .= 'DROP TABLE IF EXISTS ' . $table . ';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE ' . $table));
$sql.= "nn" . $row2[1] . ";nn";
for ($i = 0; $i < $numFields; $i++) {
while ($row = mysql_fetch_row($result)) {
$sql .= 'INSERT INTO ' . $table . ' VALUES(';
for ($j = 0; $j < $numFields; $j++) {
$row[$j] = addslashes($row[$j]);
// $row[$j] = ereg_replace("n", "\n", $row[$j]);
if (isset($row[$j])) {
$sql .= '"' . $row[$j] . '"';
} else {
$sql.= '""';
}
if ($j < ($numFields - 1)) {
$sql .= ',';
}
}
$sql.= ");n";
}
}
$sql.="nnn";
//echo " OK <br/><br/>" . "";
}
} catch (Exception $e) {
var_dump($e->getMessage());
return false;
}
return $this->saveFile($sql, $outputDir);
}
/* Save SQL to file @param string $sql */
protected function saveFile(&$sql, $outputDir = '.') {
if (!$sql)
return false;
try {
$handle = fopen($outputDir . '/' . $this->dbName . '-' . date("Ymd-His", time()) . '.sql', 'w+');
fwrite($handle, $sql);
fclose($handle);
} catch (Exception $e) {
var_dump($e->getMessage());
return false;
}
return true;
}
}
?>