• 14-02-2010, 19:03:15
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaslar elimde gene buradan alip kendime göre ayarladigim bir script var. Bu scripti calistirinca bana veritabanini sql halinde yedek alip direk indirmemi sagliyor. Ama ben Backup.php dosyasini cagirdigimda bana sql halinde degilde direk ziplenmis halini indirtmesini istiyorum ve bunun icin shell kullanmak istemiyorum cünkü iznim yok.

    lütfen yardimlarinizi bekliyorum. Bunun herkesin isine yarayacagini düsünüyorum. Cünkü bu kücük php dosyasini her veribankasinda calistirma imkaniniz var.

    backup.php
     <?
    include ('ayar.php');
    
    
    // Backup Settings
    $filename = date(d.'_'.m.'_'.Y);
    $filename = $filename.".sql";
    
    header("Content-disposition: attachment; filename=$filename");
    header("Content-type: application/force-download");
    
        $tables = mysql_list_tables($database);
        $tablenumb = mysql_num_rows($tables);
        for ($a=0;$a<$tablenumb;$a++) {
            $row=mysql_fetch_row($tables);
            $tablename=$row[0];
            $crtable = mysql_query("show create table $tablename");
            $tmpres = mysql_fetch_row($crtable);
                echo "\n\n";
                echo $tmpres[1].";";
                echo "\n\n";
            $lines = mysql_query("select * from `$tablename`");
            $linenumb = mysql_num_fields($lines);
            $nr = mysql_num_rows($lines);
            for ($c=0;$c<$nr;$c++) {
                echo "INSERT INTO `$tablename` VALUES (";
                $row = mysql_fetch_row($lines);
                for ($d=0;$d<$linenumb;$d++) {
            $data = strval($row[$d]);
                echo "'".addslashes($data)."'";
                    if ($d<($linenumb-1)) {
                        echo ", ";
                    }
                        }
                        echo ");\n";
                }
            
             }
    ?>
  • 14-02-2010, 21:10:19
    #2
    Üyeliği durduruldu
    sunucuda gzip kutuphanesi kurulu olmasi gerek bunun icin
  • 15-02-2010, 01:58:37
    #3
    phpinfo ile ögrenirim sanirim bunu.

    Eger kurulu ise nasil yapabilirim ve birde kurulu degilse kütüphane yerine php dosyasi yokmu acaba bunun araciligi ile gzip yapmak istesem.

    zip icin dzip.inc.php dosyasi var ama bu gzip yapiyormu onu bilmiyorum.
  • 15-02-2010, 02:02:56
    #4
    THR
    Üyeliği durduruldu
    bu belki işinizi görür
    http://tr.php.net/manual/tr/refs.compression.php
  • 15-02-2010, 03:15:33
    #5
    Üyeliği durduruldu
    $filename = $filename.".sql.gzip"; 
    
    header("Content-disposition: attachment; filename=$filename"); 
    header("X-Compression: gzip");
    header("Content-Encoding: gzip");
    gzip modülü default olarak yüklü gelir zaten. eğer kapatılmamışsa bu kodları değiştirmeniz yetecektir
  • 16-02-2010, 00:08:13
    #6
    thr
    bu linkte gziple ilgili konu bulamadim. zip, bzip var.

    sdemirkeser usta
    gzip kütüphanesi kurulu: _SERVER["HTTP_ACCEPT_ENCODING"] gzip

    D3LLy usta
    Bu seferde kayit ederken windows hatasi cikiyor. gzip olarak sıkıştırmadan indirmek istedigi icin yapiyor sanirim.

    bunu direk indirme seklinde degilde servere kayitlatmam icin ne yapmam gerekiyor.
  • 17-02-2010, 23:16:06
    #7
    Arkadaslar su anda scripti calistirinca sıkıştıramadan indirmek istedigi icin windows hatasi aliyorum. Bu serverde scriptin calistigi yere gzip haliyle nasil kayit ettiririm.
  • 17-02-2010, 23:58:13
    #8
    Üyeliği durduruldu
    <?php 
    include ('ayar.php'); 
    
    
    // Backup Settings 
    $filename = date(d.'_'.m.'_'.Y); 
    $filename = $filename.".sql"; 
    
     
        $tables = mysql_list_tables($database); 
        $tablenumb = mysql_num_rows($tables);
        $yedek.=''; 
        for ($a=0;$a<$tablenumb;$a++) { 
            $row=mysql_fetch_row($tables); 
            $tablename=$row[0]; 
            $crtable = mysql_query("show create table $tablename"); 
            $tmpres = mysql_fetch_row($crtable); 
                $yedek. "\n\n"; 
                $yedek. $tmpres[1].";"; 
                $yedek. "\n\n"; 
            $lines = mysql_query("select * from `$tablename`"); 
            $linenumb = mysql_num_fields($lines); 
            $nr = mysql_num_rows($lines); 
            for ($c=0;$c<$nr;$c++) { 
                $yedek. "INSERT INTO `$tablename` VALUES ("; 
                $row = mysql_fetch_row($lines); 
                $yedek. ($d=0;$d<$linenumb;$d++) { 
            $data = strval($row[$d]); 
                $yedek. "'".addslashes($data)."'"; 
                    if ($d<($linenumb-1)) { 
                        $yedek. ", "; 
                    } 
                        } 
                        $yedek. ");\n"; 
                } 
             
             }
             
            // Normal Dosya yazmak için
             
             $yedekdosyasi=fopen($filename,'w+');
             fwrite($yedekdosyasi,$yedek);
             fclose($yedekdosyasi);
             
             
             // gz yazmak için
             
             $yedekdosyasi=gzopen($yedekdosyasi.'.gz','w+');
             gzwrite($yedekdosyasi,$yedek);
             gzclose($yedekdosyasi);
             
             
             
             // oluşturduktan sonra indirmek için
             
             header('Location:'.$yedekdosyasi);
             
              
    ?>
  • 18-02-2010, 23:41:35
    #9
                $yedek. ($d=0;$d<$linenumb;$d++) {
    Satirinda hata aliyorum. buraya eski halindeki gibi for emrini koydugumda bu seferde sadece 26 bytelik bir yedek dosyasi cikartiyor. ne yapmaliyim.

    Parse error: syntax error, unexpected ';' in /home/xxx/public_html/backup.php on line 36

    Birde gzopen emrinde w+ komutu olunca hata veriyor bunun yerine sadece w komutu oldugunda dosyayi olusturuyor.