-
Üyelik
19.08.2015
-
Yaş/Cinsiyet
31 / E
-
Meslek
Webmaster
-
Konum
Sakarya
-
Ad Soyad
E** A**
-
Mesajlar
54
-
Beğeniler
24 / 6
-
Ticaret
0, (%0)
Merhabalar. Aşağıdaki kod bloğu ile db backuplarını bilgisayarıma yedek alabiliyorum. Birden fazla dbyi tek seferde indirebilmek için nasıl bir yol izlemem gerek ? Örneklere baktım fakat multiple olarak çalışmadı.
header('Content-Type: text/html; charset=utf-8');
include 'Yedekle.class.php';
date_default_timezone_set('Europe/Istanbul');
$bugun=date("d-m-H-i");
$bilgiler = array(
'src' => 'mysql',
'host' => 'localhost',
'kadi' => 'user',
'parola' => 'pass',
'veritabani' => 'db'
);
$olustur = new Yedekle($bilgiler);
$yedekle = $olustur->yedek();
if(!$yedekle['hata']){
header('Content-type: text/plain');
header('Content-disposition: attachment; filename=db'.$bugun.'.sql');
echo $yedekle['mesaj'];
} else {
echo 'İşlem başarısız oldu!';
}
-
Üyelik
10.08.2014
-
Yaş/Cinsiyet
28 / E
-
Meslek
Web Devoloper
-
Konum
Kayseri
-
Ad Soyad
N** C**
-
Mesajlar
408
-
Beğeniler
403 / 143
-
Ticaret
0, (%0)
array içerisine diğer database bilgilerini yazıp, yedek alan function içerisinde foreach ile array'i döndürüp yedekletebilirsiniz. İşlem yapan kodları görmediğim için net bir şey söyleyemem ama mantıken bu şekilde yapılabilmesi lazım
FULL STACK WEB DEVELOPER
-
Üyelik
10.08.2014
-
Yaş/Cinsiyet
28 / E
-
Meslek
Web Devoloper
-
Konum
Kayseri
-
Ad Soyad
N** C**
-
Mesajlar
408
-
Beğeniler
403 / 143
-
Ticaret
0, (%0)
class.php içerisindeki kodları atar mısınız ?
FULL STACK WEB DEVELOPER
-
Üyelik
10.08.2014
-
Yaş/Cinsiyet
28 / E
-
Meslek
Web Devoloper
-
Konum
Kayseri
-
Ad Soyad
N** C**
-
Mesajlar
408
-
Beğeniler
403 / 143
-
Ticaret
0, (%0)
Masaüstüne geçeyim bakıcam hocam
FULL STACK WEB DEVELOPER
-
Üyelik
10.08.2014
-
Yaş/Cinsiyet
28 / E
-
Meslek
Web Devoloper
-
Konum
Kayseri
-
Ad Soyad
N** C**
-
Mesajlar
408
-
Beğeniler
403 / 143
-
Ticaret
0, (%0)
Dosya üzerinde biraz değişiklik yaptım bağlantı bilgilerini Yedekle.class.php içerisinde tanımlayın
Yedek alınma işlemi yapılan index.php de array içerisine sadece yedek alınacak db'lerin isimlerini yazın. Yalnız her veritabanı için ayrı dosya indirmez tüm veritabanlarının bilgilerini tek sql dosyası içinde toplar. Daha sonra kullanmanız gerekirse yedek isimli vt oluşturup istediğiniz tarihin dosyasını alıp yükledikten sonra içinden istediğiniz veritabanının dosyalarını alırsınız, veya editör ile sql dosyasını açıp sadece ilgili tablonun içeriğini yeni sql dosyasına kayıt edip yüklersiniz
index.php
header('Content-Type: text/html; charset=utf-8');
include 'Yedekle.class.php';
date_default_timezone_set('Europe/Istanbul');
$bugun=date("d-m-H-i");
$bilgiler = array(
'gsh_db',
'test',
'gsh_db2'
);
$olustur = new Yedekle($bilgiler);
$yedekle = $olustur->yedek();
if(!$yedekle['hata']){
header('Content-type: text/plain');
header('Content-disposition: attachment; filename=db'.$bugun.'.sql');
echo $yedekle['mesaj'];
} else {
echo 'İşlem başarısız oldu!';
}
Yedekle.class.php
class Yedekle {
/**
* Bağlantı kurulacak alanın aktarıldığı değişken
* @var
*/
private $host;
/**
* Bağlantı aşamasında kullanacağımız değişken
* @var
*/
private $src;
/**
* Bağlantı aşamasında kullanılan kullanıcı adı
* @var
*/
private $kadi;
/**
* Bağlantı aşamasında kullanacağımız parola
* @var
*/
private $parola;
/**
* Bağlanacağımız veritabanının adı
* @var
*/
private $vt_adi;
/**
* PDO kullanarak veritabanına bağlanacağımız değişken
* @var
*/
private $bilgiler;
/**
* Veritabanındaki tabloların dizi olarak tutulacağı değişken
* @var
*/
private $tablolar = array();
/**
* Veritabanına bağlıyken kullanacağımız nesne
* @var
*/
private $islem;
/**
* Alınan hataların dizi olarak aktarıldığı değişken
* @var
*/
private $hata = array();
/**
* Başarılı olduğumuzda kullanacağımız sonuç dizesi
* @var
*/
private $son;
/**
* Veritabanı bağlantısı @uses private
*/
private function baglan(){
try {
$this->islem = new PDO($this->bilgiler.';charset=utf8;', $this->kadi, $this->parola);
$this->islem->query('SET CHARACTER SET UTF8');
} catch (PDOException $e) {
$this->islem = null;
$this->hata[] = $e->getMessage();
return false;
}
}
/**
* Tabloları al @uses private
*/
private function tablo_al(){
try {
$goster = $this->islem->query('SHOW TABLES');
$bol = $goster->fetchAll();
$indis = 0;
foreach($bol as $tablo){
$this->tablolar[$indis]['ad'] = $tablo[0];
$this->tablolar[$indis]['olustur'] = $this->sutun_al($tablo[0]);
$this->tablolar[$indis]['veri'] = $this->veri_al($tablo[0]);
$indis++;
}
unset($goster);
unset($bol);
unset($indis);
return true;
} catch (PDOException $e) {
$this->islem = null;
$this->hata[] = $e->getMessage();
return false;
}
}
/**
*
* Sütunları al @uses private
*/
private function sutun_al($tablo_adi){
try {
$goster = $this->islem->query('SHOW CREATE TABLE '.$tablo_adi);
$bol = $goster->fetchAll();
$bol[0][1] = preg_replace("/AUTO_INCREMENT=[\w]*./", '', $bol[0][1]);
return $bol[0][1];
} catch (PDOException $e){
$this->islem = null;
$this->hata[] = $e->getMessage();
return false;
}
}
/**
*
* Tablolardan kayıtlı verileri al @uses private
*/
private function veri_al($tablo_adi){
try {
$goster = $this->islem->query('SELECT * FROM '.$tablo_adi);
$bol = $goster->fetchAll(PDO::FETCH_NUM);
$veri = '';
foreach ($bol as $parcalar){
foreach($parcalar as &$deger){
$deger = addslashes($deger);
}
$veri .= 'INSERT INTO '. $tablo_adi .' VALUES (\'' . implode('\',\'', $parcalar) . '\');'."\n";
}
return $veri;
} catch (PDOException $h){
$this->islem = null;
$this->hata[] = $h->getMessage();
return false;
}
}
public function Yedekle($parametre){
if( count($this->hata) > 0 ){
return;
}
// Bağlantı bilgileri burada tanımlanacak
$this->host = "localhost";
$this->tip = "mysql";
$this->kadi = "root";
$this->parola = "";
if($this->host=='localhost'){
$this->host = '127.0.0.1';
}
foreach($parametre as $vt){
$this->vt_adi = $vt;
$this->bilgiler = $this->tip.':host='.$this->host.';dbname='.$this->vt_adi;
$this->baglan();
$this->tablo_al();
$this->olustur();
}
}
/**
* Yedek almak için çağırılan fonksiyon
* @example Yedekle::yedek();
*/
public function yedek(){
if(count($this->hata)>0){
return array('hata'=>true, 'mesaj'=>$this->hata);
}
return array('hata'=>false, 'mesaj'=>$this->son);
}
/**
* Yedek dizeleri oluşturur @uses private
*/
private function olustur(){
foreach ($this->tablolar as $t) {
$this->son .= $t['olustur'] . ";\n\n";
$this->son .= $t['veri']."\n\n\n";
}
}
}
?>
FULL STACK WEB DEVELOPER