|
|
Veri tabanında çok sık güncelleme yapıldığından verilerin yazı dosyasına aktarılması, tabloların silinip yeniden yaratılması sistemin verimini arttırır. Bunun için kullanılabilecek küçük bir php kodlaması aşağıda gösterilmiştir:
<?php
function db_install($database, $fsql) {
global $mystatus;
$mystatus = false;
echo("veri tabanı yaratma ". $database . " " .$fsql."<br>");
if (!@select_db($database)) {
$mystatus = $database." bulunamadi";
return false;
}
if (!$mystatus) {
if (file_exists($fsql)) {
$fd = fopen($fsql, "r");
$restore_query = fread($fd, filesize($fsql));
fclose($fd);
} else {
$mystatus = 'SQL file does not exist: ' . $fsql;
return false;
}
$sql_array = array();
$sql_array = split(";",$restore_query);
$sql_length = count($sql_array);
$pos = strpos($restore_query, ';');
for ($i=0; $i<$pos; $i++) {
db_query($sql_array[$i].";");
if($mystatus) break;
}
$xf = strpos($mystatus,"empty");
if($xf >= 0) $mystatus="";
return false;
}
}
$dbuser="";
$dbpasswd="";
$dbname="";
$baglan = mysql_connect($dbhost, $dbuser, $dbpasswd)
or die("Bağlantı kurulamadı" . mysql_error());
mysql_select_db($dbname, $baglan);
$mystatus = false;
$yedekleme = "E"; // yedekleme ekrana yapilir.
// diske yazdirmak icin bos olmalidir.
if(check_valid_user()) {
$ss = array();
$ss[0] = "users";
$ss[1] = "msg";
$mystatus = false;
$d = count($ss);
for($i=0; $i<$d; $i++) {
$sorgu="SELECT * from $ss[$i]";
$result = mysql_query($sorgu);
if($yedekleme != "E") {
$fpname = "yedek/".$ss[$i].".txt";
if($result) {
$fp = fopen($fpname,"w");
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $col_value) {
fputs($fp, $col_value."\t");
}
fputs($fp,"\n");
}
fclose($fp);
mysql_free_result($result);
} else {
$mystatus = mysql_error();
break;
}
} else {
echo("<hr>".$ss[$i].".txt<br>");
if($result) {
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $col_value) {
echo($col_value."\t");
}
echo("\n<br>");
}
} else {
$mystatus = mysql_error();
break;
}
}
}
if(!$mystatus) {
echo("Veri Tabanı tabloları yedeklendi");
// tablosu silip yeniden yarat
$fsql = "sql-tables/chat.sql";
db_install($dbname,$fsql);
echo("Veri Tabanı tabloları yaratıldı");
}
else echo($mystatus);
} else {
echo("yetkili değilsiniz");
}
?>
Bu örnekte yer alan chat.sql daha önceki sayfalarda gösterilmiş olan veri tabanı tablolarindan oluşur. Burada yeniden yazılmamıştır.
|