|
|
|
ผมต้องการให้ไฟล์ที่ backup ฐานข้อมูลมาแล้ว นำชื่อไฟล์บันทึกเขาไปเก็บในฐานข้อมูลนะครับ ช่วยหน่อยครับ |
|
|
|
|
|
|
|
ผมต้องการให้ไฟล์ที่ backup ฐานข้อมูลมาแล้ว นำชื่อไฟล์บันทึกเขาไปเก็บในฐานข้อมูลด้วยนะครับ ช่วยหน่อยครับ โดยให้บันทึกเก็บดังนี้ id , name,size ในตารางฐานข้อมูล backup_to
Code (PHP)
<?
error_reporting(E_ALL);
define("OUTPUT_DIR", 'backup');
define("TABLES", '*');
$backupDatabase = new Backup_Database($hostname, $dbuser, $dbpassword, $dbname);
$status = $backupDatabase->backupTables(TABLES, OUTPUT_DIR) ? 'OK' : 'KO';
echo "
Backup result: ".$status;
class Backup_Database {
var $hostname = '';
var $dbuser = '';
var $dbpassword = '';
var $dbname = '';
var $charset = '';
function Backup_Database($hostname, $dbuser, $dbpassword, $dbname, $charset = 'utf8')
{
$this->host = $hostname;
$this->username = $dbuser;
$this->passwd = $dbpassword;
$this->dbName = $dbname;
$this->charset = $charset;
$this->initializeDatabase();
}
protected function initializeDatabase()
{
$conn = mysql_connect($this->host, $this->username, $this->passwd);
mysql_select_db($this->dbName, $conn);
if (! mysql_set_charset ($this->charset, $conn))
{
mysql_query('SET NAMES '.$this->charset);
}
}
public function backupTables($tables = '*', $outputDir = '.')
{
try
{
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.";\n\n";
$sql .= 'USE '.$this->dbName.";\n\n";
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.= "\n\n".$row2[1].";\n\n";
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.="\n\n\n";
echo " OK" . "
";
}
}
catch (Exception $e)
{
var_dump($e->getMessage());
return false;
}
return $this->saveFile($sql, $outputDir);
}
protected function saveFile(&$sql, $outputDir = '.')
{
if (!$sql) return false;
try
{
$handle = fopen($outputDir.'/db-backup-'.$this->dbName.'-'.date("Ymd-His", time()).'.sql','w+');
fwrite($handle, $sql);
fclose($handle);
}
catch (Exception $e)
{
var_dump($e->getMessage());
return false;
}
return true;
}
}
?>
Tag : PHP, Ajax
|
ประวัติการแก้ไข 2015-01-07 01:42:10
|
|
|
|
|
Date :
2015-01-07 01:40:32 |
By :
dtectoo |
View :
601 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Backup แบบนี้โอกาศข้อมูลผิดเพี้ยนสูงมากครับ แนะนำให้ผ่าน Command Line สั่งโดย php จะดีกว่าครับ ในบทความเก่า ๆ จะมีอยู่ครับ
|
|
|
|
|
Date :
2015-01-07 10:09:02 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|