النتائج 1 إلى 7 من 7

الموضوع: خذ نسخة احتياطية لموقعك بضغطة زر واحدة

  1. #1
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759

    خذ نسخة احتياطية لموقعك بضغطة زر واحدة



    بسم الله الرحمن الرحيم
    وانا الف على بعض المواقع صادفنى كود لكيفية اخذ نسخة احتياطية لموقع من خلال كود بسيط جدا فحبيت اشارككم الفكرة

    ملحوظة
    النسخة المسحوبة من نوع INSERT
    يعنى بتنشئ قاعدة فارغه وتضعها بداخلها مباشرة (بدلا من القاعدة المعطوبة لاقدر الله)

    يجب ان يكون المجلد الذى يوضع به الملف لدية التصريح 777

    الكود
    كود PHP:
    backup_tables('localhost','username','password','blog');


    /* backup the db OR just a table */
    function backup_tables($host,$user,$pass,$name,$tables '*')
    {
        
        
    $link mysql_connect($host,$user,$pass);
        
    mysql_select_db($name,$link);
        
        
    //get all of the tables
        
    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);
        }
        
        
    //cycle through
        
    foreach($tables as $table)
        {
            
    $result mysql_query('SELECT * FROM '.$table);
            
    $num_fields mysql_num_fields($result);
            
            
    $return.= 'DROP TABLE '.$table.';';
            
    $row2 mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
            
    $return.= "\n\n".$row2[1].";\n\n";
            
            for (
    $i 0$i $num_fields$i++) 
            {
                while(
    $row mysql_fetch_row($result))
                {
                    
    $return.= 'INSERT INTO '.$table.' VALUES(';
                    for(
    $j=0$j<$num_fields$j++) 
                    {
                        
    $row[$j] = addslashes($row[$j]);
                        
    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
                        if (isset(
    $row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                        if (
    $j<($num_fields-1)) { $return.= ','; }
                    }
                    
    $return.= ");\n";
                }
            }
            
    $return.="\n\n\n";
        }
        
        
    //save file
        
    $handle fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
        
    fwrite($handle,$return);
        
    fclose($handle);

    لاتنس ان تضعه بين وسمى php

    وفى حالة لاقدر الله انحذفت قاعدة بيانات يمكنك حينها استرجاعها بسهولة

    وانتظرونى ان شاء الله بحاول اعد على الكود حتى يجعلها مضغوطة او لو فى حد حابب يسوى الكود ليجعلها مضغوطة يبقى جازاه الله كل خير





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم


  2. #2
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169


    رائع بكل ما تحمل الكلمة من معنى


    بس لو كان ممكنا تقسيم العملية إلى أجزاء لأنه لو تم تنفيدها عهلى قاعدة بيانات متوسطة أو ضخمة الحجم بالتأكيد راح يكون ضغط على الخادم

    لي عودة إن شاء الله






  3. #3
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    رائع بكل ما تحمل الكلمة من معنى


    بس لو كان ممكنا تقسيم العملية إلى أجزاء لأنه لو تم تنفيدها عهلى قاعدة بيانات متوسطة أو ضخمة الحجم بالتأكيد راح يكون ضغط على الخادم

    لي عودة إن شاء الله
    بانتظارك ,, بالتوفيق اخوى





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

  4. #4


    الكود غير كامل ولن يأخذ القاعدة بشكل صحيح

    هذه كلاس كاملة وصحيحة بإذن الله

    كود PHP:
    <?php
        
    //MySQL connection parameters
        
        
    $dbhost="localhost";
        
    $dbuser="";
        
    $dbpsw="";
        
    $dbname="";
        
        
    //Connects to mysql server
        
    $connessione = @mysql_connect($dbhost,$dbuser,$dbpsw);

           
        class 
    MySQLDump 
        
    {
           function 
    MYSQLDump($db null$filepath 'dump.sql'$compress false$hexValue false){
                  
    $this->compress $compress;
                  if ( !
    $this->setOutputFile($filepath) )
                      return 
    false;
                  return 
    $this->setDatabase($db);
              }
              function 
    getDatabaseStructure()
            {
                    
    $records = @mysql_query('SHOW TABLES');
                    if ( @
    mysql_num_rows($records) == )
                        return 
    false;
                    while ( 
    $record = @mysql_fetch_row($records) ) {
                        
    $structure .= $this->getTableStructure($record[0]);
                    }
                    return 
    true;
            }
              function 
    getTableStructure($table)
              {
                                  if ( !
    $this->setDatabase($this->database) )
                                      return 
    false;
                                  
    // Structure Header
                                  
    $structure "-- \n";
                                  
    $structure .= "-- Table structure for table `{$table}` \n";
                                  
    $structure .= "-- \n\n";
                                  
    // Dump Structure
                                  
    $structure .= 'DROP TABLE IF EXISTS `'.$table.'`;'."\n";
                                  
    $structure .= "CREATE TABLE `".$table."` (\n";
                                  
    $records = @mysql_query('SHOW FIELDS FROM `'.$table.'`');
                                  if ( @
    mysql_num_rows($records) == )
                                      return 
    false;
                                  while ( 
    $record mysql_fetch_assoc($records) ) {
                                      
    $structure .= '`'.$record['Field'].'` '.$record['Type'];
                                      if ( !empty(
    $record['Default']) )
                                          
    $structure .= ' DEFAULT \''.$record['Default'].'\'';
                                      if ( @
    strcmp($record['Null'],'YES') != )
                                          
    $structure .= ' NOT NULL';
                                      if ( !empty(
    $record['Extra']) )
                                          
    $structure .= ' '.$record['Extra'];
                                      
    $structure .= ",\n";
                                  }
                                  
    $structure = @ereg_replace(",\n$"null$structure);
                          
                                  
    // Save all Column Indexes
                                  
    $structure .= $this->getSqlKeysTable($table);
                                  
    $structure .= "\n)";
                          
                                  
    //Save table engine
                                  
    $records = @mysql_query("SHOW TABLE STATUS LIKE '".$table."'");
                                  echo 
    $query;
                                  if ( 
    $record = @mysql_fetch_assoc($records) ) {
                                      if ( !empty(
    $record['Engine']) )
                                          
    $structure .= ' ENGINE='.$record['Engine'];
                                      if ( !empty(
    $record['Auto_increment']) )
                                          
    $structure .= ' AUTO_INCREMENT='.$record['Auto_increment'];
                                  }
                          
                                  
    $structure .= ";\n\n-- --------------------------------------------------------\n\n";
                                  
    $this->saveToFile($this->file,$structure);
                              }
                                  function 
    saveToFile($file$data) {
            if ( 
    $this->compress )
                @
    gzwrite($file$data);
            else
                @
    fwrite($file$data);
            
    $this->isWritten true;
        }
                  function 
    setDatabase($db){
            
    $this->database $db;
            if ( !@
    mysql_select_db($this->database) )
                return 
    false;
            return 
    true;
      }
      function 
    setOutputFile($filepath){
            if ( 
    $this->isWritten )
                return 
    false;
            
    $this->filename $filepath;
            
    $this->file $this->openFile($this->filename);
            return 
    $this->file;
      }
      function 
    openFile($filename) {
            
    $file false;
            if ( 
    $this->compress )
                
    $file = @gzopen($filename"w9");
            else
                
    $file = @fopen($filename"w");
            return 
    $file;
        }
        function 
    getSqlKeysTable ($table) {
            
    $primary "";
            unset(
    $unique);
            unset(
    $index);
            unset(
    $fulltext);
            
    $results mysql_query("SHOW KEYS FROM `{$table}`");
            if ( @
    mysql_num_rows($results) == )
                return 
    false;
            while(
    $row mysql_fetch_object($results)) {
                if ((
    $row->Key_name == 'PRIMARY') AND ($row->Index_type == 'BTREE')) {
                    if ( 
    $primary == "" )
                        
    $primary "  PRIMARY KEY  (`{$row->Column_name}`";
                    else
                        
    $primary .= ", `{$row->Column_name}`";
                }
                if ((
    $row->Key_name != 'PRIMARY') AND ($row->Non_unique == '0') AND ($row->Index_type == 'BTREE')) {
                    if ( (!
    is_array($unique)) OR ($unique[$row->Key_name]=="") )
                        
    $unique[$row->Key_name] = "  UNIQUE KEY `{$row->Key_name}` (`{$row->Column_name}`";
                    else
                        
    $unique[$row->Key_name] .= ", `{$row->Column_name}`";
                }
                if ((
    $row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'BTREE')) {
                    if ( (!
    is_array($index)) OR ($index[$row->Key_name]=="") )
                        
    $index[$row->Key_name] = "  KEY `{$row->Key_name}` (`{$row->Column_name}`";
                    else
                        
    $index[$row->Key_name] .= ", `{$row->Column_name}`";
                }
                if ((
    $row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'FULLTEXT')) {
                    if ( (!
    is_array($fulltext)) OR ($fulltext[$row->Key_name]=="") )
                        
    $fulltext[$row->Key_name] = "  FULLTEXT `{$row->Key_name}` (`{$row->Column_name}`";
                    else
                        
    $fulltext[$row->Key_name] .= ", `{$row->Column_name}`";
                }
            }
            
    $sqlKeyStatement '';
            
    // generate primary, unique, key and fulltext
            
    if ( $primary != "" ) {
                
    $sqlKeyStatement .= ",\n";
                
    $primary .= ")";
                
    $sqlKeyStatement .= $primary;
            }
            if (
    is_array($unique)) {
                foreach (
    $unique as $keyName => $keyDef) {
                    
    $sqlKeyStatement .= ",\n";
                    
    $keyDef .= ")";
                    
    $sqlKeyStatement .= $keyDef;

                }
            }
            if (
    is_array($index)) {
                foreach (
    $index as $keyName => $keyDef) {
                    
    $sqlKeyStatement .= ",\n";
                    
    $keyDef .= ")";
                    
    $sqlKeyStatement .= $keyDef;
                }
            }
            if (
    is_array($fulltext)) {
                foreach (
    $fulltext as $keyName => $keyDef) {
                    
    $sqlKeyStatement .= ",\n";
                    
    $keyDef .= ")";
                    
    $sqlKeyStatement .= $keyDef;
                }
            }
            return 
    $sqlKeyStatement;
        }


                

        }
        

    //Creates a new instance of MySQLDump: it exports a compressed and base-16 file
    $dumper = new MySQLDump($dbname,'filename.sql',false,false);
    $dumper->getDatabaseStructure();
    ?>
    من موقع php classes





    __________________
    السيف أصدق أنباء من الكتب

  5. #5
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    محب الله ورسوله
    بصراحة انا جربت الكود وجربت القاعدة وظبت معى
    على كل كيف استخدم الكلاس بالاعلى
    المصدر





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

  6. #6


    محب الله ورسوله
    بصراحة انا جربت الكود وجربت القاعدة وظبت معى
    على كل كيف استخدم الكلاس بالاعلى
    المصدر
    لو لديك fulltext بين حقول او index إلخ
    لن يتم أخذه مع القاعدة
    لهذا قلت لك الكود ناقص عمل الستراكتشر بشكل كامل





    __________________
    السيف أصدق أنباء من الكتب

  7. #7
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    جزاك الله كل خير اخوى محب الله ورسوله





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض