Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] - backup bazy danych
Forum PHP.pl > Inne > Oceny
Black-Berry
Napisałem dziś rano takie cos i chciałbym się dowiedzieć czy moze czegoś przypadkiem nie przeoczyłem. Jesli nie to po niewielkich modyfikacjach ta klasa nadaje sie do backupowania bazy danych. Pozdrawiam.
  1. <?php
  2. include_once( "database_connection.php" );
  3.  
  4. // main class
  5. class c_backup_download
  6. {  
  7. var $backup_file_mame;
  8. var $current_date;
  9.  
  10. function c_backup_download()
  11. {
  12. $this->backup_file_mame = "backup_temporary.php";
  13. $t = getdate();  
  14. $this->current_date = date('d-m-Y',$t[0]);
  15. }
  16.  
  17.  
  18. function create_backup_file()
  19. {
  20. $file = fopen( $this->backup_file_mame, 'a');
  21. fwrite( $file, "<?php n" );
  22. fwrite( $file, "include_once( "database_connection.php" );n" );
  23.  
  24. $query = "SHOW TABLES";
  25. $result = mysql_query( $query );
  26. while ( $row = mysql_fetch_assoc($result) ) foreach ( $row as $table )
  27. {
  28. //deleting all tables...
  29. fwrite( $file, "mysql_query( "DELETE FROM ".$table."" )or die ( mysql_error() );n" );
  30. //getting column names for table...
  31. $result2 = mysql_query( "SHOW COLUMNS FROM ".$table."" );
  32. $col_names= ""; while( $row2 = mysql_fetch_array( $result2) ) $col_names.= $row2[0] . ", ";
  33. //getting all rows in table...
  34. $result2 = mysql_query( "SELECT * FROM ".$table."" );
  35. while( $row2 = mysql_fetch_assoc( $result2) )
  36. {
  37. $values= ""; foreach( $row2 as $value ) $values.= "'" . mysql_real_escape_string($value) . "', ";
  38. fwrite( $file, "mysql_query( "INSERT INTO ".$table." ( ".$col_names." ) VALUES ( ".$values." )" ) or die ( mysql_error() ); n" );
  39. }
  40. }
  41. fwrite( $file, "?> n" );
  42. fclose( $file );
  43. }
  44.  
  45.  
  46. function download_file()
  47. {
  48. $type = "application/force-download";
  49.  
  50. if( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( "/MSIE/", $_SERVER['HTTP_USER_AGENT']) )
  51. {
  52. // IE Bug in download name workaround
  53. ini_set( 'zlib.output_compression','Off' );
  54. }
  55.  
  56. header( "Content-disposition: ".$disp."; filename=".$this->current_date."" );
  57. header( "Content-length: ".filesize($file) );
  58. header( "Content-type: ".$type );
  59. header( "Connection: close" );
  60. header( "Expires: 0" );
  61. readfile( $this->backup_file_mame );
  62. }
  63.  
  64. }
  65.  
  66. function panel_drop()
  67. {
  68. $panel = new c_backup_download();
  69. $panel->create_backup_file();
  70. $panel->download_file();
  71. }
  72. panel_drop();
  73. ?>
phpion
Hmmm, po co wyważać otwarte drzwi? mysqldump...
envp
Bo nie zawsze jest dostęp do mysql_dumpa, czy phpmyadmin'a snitch.gif
Black-Berry
A poza tym jak połaczysz to sobie z wczytywaniem bazy to masz opcję load/save i mozesz sie bawic na rózne sposoby ze sronka bez obawy ze cos zepsujesz a co najwazniejsze wszystko jednym kliknięciem. Świetna sprawa, polecam napisanie takiego skryptu. Mój jest chyba raczej średniawy ale będe nad nim pewnie jeszcze z kilka dni siedział. Byłbym wdzięczny za jakieś wskazówki. Pozdrawiam:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.