/
  • پشتيبان گيري از MySQL

  • ارسال پاسخ   امتیاز موضوع:
    • 2 رأی - میانگین امیتازات: 3
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی پشتيبان گيري از MySQL
    نویسنده پیام
    aligilani1986 آفلاین
    Hyp3r
    ***

    ارسال‌ها: 119
    تاریخ عضویت: ۱۳۸۷ دي ۱
    اعتبار: 2
    تشکرها : 136
    ( 90 تشکر در 47 ارسال )
    ارسال: #1
    پشتيبان گيري از MySQL
    سلام.

    مدتي دنبال يك كد براي پشتيبان گيري از mysql ميگشتم.

    اين كد رو داخل يك فايل بگذاريد و تابع backup را صدا بزنيد.
    host: _DBHOST
    username mysql : _DBUSER
    password : _DBPASS
    dbname : _DBNAME

    کد PHP:
            function my_handler($sql_insert)
            {
                global 
    $crlf;
                echo 
    "$sql_insert;$crlf";
            }

            
    // Get the content of $table as a series of INSERT statements.
            // After every row, a custom callback function $handler gets called.
            // $handler must accept one parameter ($sql_insert);
            
    function get_table_content($db$table$handler)
            {
                
    $link mysql_connect(_DBHOST,_DBUSER,_DBPASS);
                       
    mysql_select_db(_DBNAME,$link);
                
               
    $result mysql_db_query($db"SELECT * FROM $table",$link) or mysql_die();
                
    $i 0;
                while(
    $row mysql_fetch_row($result))
                {
                    
    //        set_time_limit(60); // HaRa
                    
    $table_list "(";

                    for(
    $j=0$j<mysql_num_fields($result);$j++)
                    
    $table_list .= "`".mysql_field_name($result,$j)."`, ";

                    
    $table_list substr($table_list,0,-2);
                    
    $table_list .= ")";
     
                    
    $schema_insert "\n INSERT INTO `$table$table_list VALUES (";
                 

                    for(
    $j=0$j<mysql_num_fields($result);$j++)
                    {
                        if(!isset(
    $row[$j]))
                        
    $schema_insert .= " NULL,";
                        elseif(
    $row[$j] != "")
                        
    $schema_insert .= " '".addslashes($row[$j])."',";
                        else
                        
    $schema_insert .= " '',";
                    }
                    
    $schema_insert ereg_replace(",$"""$schema_insert);
                    
    $schema_insert .= ")";
                    
    $handler(trim($schema_insert));
                    
    $i++;
                }
                return (
    true);
            }

            
    // Return $table's CREATE definition
            // Returns a string containing the CREATE statement on success
            
    function get_table_def($db$table$crlf)
            { 
                
    $link mysql_connect(_DBHOST,_DBUSER,_DBPASS);
                       
    mysql_select_db(_DBNAME,$link);
        
                
    $schema_create "";
                
    //$schema_create .= "DROP TABLE IF EXISTS $table;$crlf";
                
    $schema_create .= " \n CREATE TABLE  IF NOT EXISTS  `$table` ($crlf";

                
    $result mysql_db_query($db"SHOW FIELDS FROM $table",$link) or mysql_die();
                while(
    $row mysql_fetch_array($result))
                {
                    
    $schema_create .= "   `$row[Field]$row[Type]";

                    if(isset(
    $row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
                    
    $schema_create .= " DEFAULT '$row[Default]'";
                    if(
    $row["Null"] != "YES")
                    
    $schema_create .= " NOT NULL";
                    if(
    $row["Extra"] != "")
                    
    $schema_create .= $row[Extra]";
                    
    $schema_create .= ",$crlf";
                }
                
    $schema_create ereg_replace(",".$crlf."$"""$schema_create);
                
    $result mysql_db_query($db"SHOW KEYS FROM $table",$link) or mysql_die();
                while(
    $row mysql_fetch_array($result))
                {
                    
    $kname=$row['Key_name'];
                    if((
    $kname != "PRIMARY") && ($row['Non_unique'] == 0))
                    
    $kname="UNIQUE|$kname";
                    if(!isset(
    $index[$kname]))
                    
    $index[$kname] = array();
                    
    $index[$kname][] = $row['Column_name'];
                }

                while(list(
    $x$columns) = @each($index))
                {
                    
    $schema_create .= ",$crlf";
                    if(
    $x == "PRIMARY")
                    
    $schema_create .= "   PRIMARY KEY (`" implode($columns", ") . "`)";
                    elseif (
    substr($x,0,6) == "UNIQUE")
                    
    $schema_create .= "   UNIQUE ".substr($x,7)." (`" implode($columns", ") . "`)";
                    else
                    
    $schema_create .= "   KEY $x (`" implode($columns", ") . "`)";
                }

                
    $schema_create .= "$crlf)";
                return (
    stripslashes($schema_create));
            }

            function 
    mysql_die($error "")
            {
                echo 
    "<b> $strError </b><p>";
                if(isset(
    $sql_query) && !empty($sql_query))
                {
                    echo 
    "$strSQLQuery: <pre>$sql_query</pre><p>";
                }
                if(empty(
    $error))
                echo 
    $strMySQLSaid.mysql_error();
                else
                echo 
    $strMySQLSaid.$error;
                echo 
    "<br><a href=\"javascript:history.go(-1)\">$strBack</a>";
                exit;
            }

            function 
    backup()
            {
                
    header("Content-disposition: filename="._DBNAME.".sql");
                
    header("Content-type: application/octetstream");
                
    header("Pragma: no-cache");
                
    header("Expires: 0");
            
                
    // doing some DOS-CRLF magic...
                
    $client $_SERVER["HTTP_USER_AGENT"];
                if(
    ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
                {
                    
    $os $regs[1];
                    
    // this looks better under WinX
                    
    if (eregi("Win",$os))
                    
    $crlf="\r\n";
                }
                
    $link mysql_connect(_DBHOST,_DBUSER,_DBPASS);
                           
    mysql_select_db(_DBNAME,$link);
            
                
    $tables mysql_list_tables(_DBNAME,$link);
        
                
    $num_tables = @mysql_numrows($tables);
                
                if(
    $num_tables == 0)
                {
                    echo 
    $strNoTablesFound;
                }
                else
                {
                    
    $i 0;
                    
    $heure_jour date ("H:i");
         
                    while(
    $i $num_tables)
                    {
                        
    $table mysql_tablename($tables$i);
         
                        echo  
    get_table_def(_DBNAME$table$crlf).";$crlf$crlf";
         
                        
    get_table_content(_DBNAME$table"my_handler");
        
                        
    $i++;
                    }
                } 
            } 
    __________________________________________________________________________
    www.shoo.ir
    (آخرین ویرایش در این ارسال: ۱۳۸۸ فروردين ۲۳ ۰۸:۴۷ عصر، توسط Y.P.Y.)
    ۱۳۸۷ اسفند ۲۷ ۱۰:۴۳ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : molana Y.P.Y
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS