Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Automatyczna optymalizacja tabel w bazie
Forum PHP.pl > Forum > Przedszkole
patryk9200
Czy jest możliwość utworzenia skryptu który automatycznie optymalizował by wszystkie tabele z danej bazy?

ogólna koncepcja:
-połczenie z bazą,
-pobranie ilości tabel
-optymalizacja pobranych tabel.

jak pobierać dane o tabelach, a potem je wszystkie zoptymalizować?
RafaelX
do pokazania tabel służy zapytanie
  1. <?php
  2. "SHOW TABLES"
  3. ?>

pamiętaj zeby wcześniej wybrać baze

póxniej otrzymujesz tablice z nazwami tabel cos w stylu
  1. <?php
  2. (
  3.    [0] => Array
  4.        (
  5.            [Tables_in_nazwabazy] => tabela1
  6.        )
  7.  
  8.    [1] => Array
  9.        (
  10.            [Tables_in_nazwabazy] => tabela2
  11.        )
  12.  
  13.    [2] => Array
  14.        (
  15.            [Tables_in_nazwabazy] => tabela3
  16.        )
  17.     )
  18. ?>

a później wynik przetwórz i wyświetl w formularzu
nazwy zaznaczonych table prześlij w formularzu przetwórz to pętla i gotowe

pewnie wiesz ale dodam ze do optymalizacji słuzy zapytanie
  1. <?php
  2. "OPTIMIZE TABLE `tabelka`"
  3. ?>


edit mozesz tez zrobic sprawdzanie i naprawe
  1. <?php
  2. "CHECK TABLE `tabelka` "
  3. "REPAIR TABLE `tabelka` "
  4. ?>
patryk9200
hmm..
zrobiłem coś takiego:
  1. <?php
  2. $zapytanie = @mysql_query("SHOW TABLES");
  3.        
  4.      
  5.       if ($zapytanie)
  6.       {
  7.        $zapytanie = @mysql_query("OPTIMIZE TABLE `$tabela`
  8.         CHECK TABLE `$tabela`
  9. REPAIR TABLE `$tabela` ");
  10.       $wynik = mysql_query ($zapytanie);
  11.       }
  12.       else
  13.       {
  14.       echo 'nie udalo sie';
  15.       }
  16. ?>


ale to mi tabel jakoś nie optymalizuje....
co robię źle??
kipero
W MySQL nie można wykonywać trzech zapytań na raz.
  1. <?php
  2. $zapytanie = @mysql_query("OPTIMIZE TABLE `$tabela`
  3.        CHECK TABLE `$tabela`
  4. REPAIR TABLE `$tabela` ");
  5. ?>

Rozdziel na trzy oddzielne zapytania.
patryk9200
zrobiłem tak jak powiedziałeś... ale nadal nie działa ;/ ehh..
  1. <?php
  2. mysql_connect ("host", "user", "pass") or  
  3. die ("nie mozna polaczyc sie z mysql");
  4. mysql_select_db ("dbbase") or  
  5. die ("nie mozna polaczyc sie z mysql");
  6.  
  7.  
  8. $zapytanie = @mysql_query("SHOW TABLES");
  9.  
  10.     if ($zapytanie)
  11.       {
  12.        $zapytanie = @mysql_query("OPTIMIZE TABLE `$tabela`");
  13.       $wynik = mysql_query ($zapytanie);
  14.       }
  15.       else
  16.       {
  17.       echo 'nie udalo sie ptymalizacja <br>';
  18.       }
  19.        
  20.      
  21.       if ($zapytanie)
  22.       {
  23.        $zapytanie = @mysql_query("CHECK TABLE `$tabela` ");
  24.       $wynik = mysql_query ($zapytanie);
  25.       }
  26.       else
  27.       {
  28.       echo 'nie udalo sie sprawdzanie <br>';
  29.       }
  30.      
  31.          if ($zapytanie)
  32.       {
  33.        $zapytanie = @mysql_query("REPAIR TABLE `$tabela` ");
  34.       $wynik = mysql_query ($zapytanie);
  35.       }
  36.       else
  37.       {
  38.       echo 'nie udalo sie naprawic <br>';
  39.       }
  40. ?>


a dlaczego w 2,3 pętli zwraca mi " nie udało się" a w pierwszej nic nie pokazuje??
RafaelX
ale jak ma działać jak w zmiennej $tabelka nic nie ma...

musisz wszystkie nazwy z tabeli kolejno optymalizować w tym celu przepuścić to przez jakaś pętle, pamiętaj ze tam jest array w array'u
użyj foreach" title="Zobacz w manualu PHP" target="_manual

albo lepiej poczytaj array" title="Zobacz w manualu PHP" target="_manual
patryk9200
ok mam to zrobione działa znakomicie winksmiley.jpg

mam natomiast inne pytanie...
zrobiłem kod który powinien kopiowac aze danych do pliku, niestety nie tworzy mi pliku... czy gdzieś zrobiłem bład??
  1. <?php
  2. $tmpDir = "";
  3. $dbHost = ".....";
  4. $user = ".....";
  5. $password = "....";
  6. $dbName = "....";
  7. $prefix = "db_test-";
  8.  
  9. // email settings...
  10. $data = date('Y_m_d');
  11. $sqlFile = $tmpDir.$prefix.date('Y_m_d').".sql";
  12. $attachment = $tmpDir.$prefix.date('Y_m_d').".tgz";
  13. $creatBackup = 'mysqldump –host='.$dbHost.' -u '.$user.' –password='.$password.' '.$dbName.' > '.$sqlFile.'';
  14. $createZip = "tar cvzf ".$attachment."".$sqlFile."";
  15. exec($creatBackup);
  16. exec($createZip);
  17. ?>
Fifi209
Podstawowe pytanie, masz prawo do zapisu w tym katalogu?
patryk9200
Tak chmod ustawione na:777

dalej nic...;/

OK gotowe winksmiley.jpg

Teraz skrypt ma takie opcje:
przeszukuje tabele w poszukiwaniu błędów, jeśli znajdzie to je naprawia,
następnie optymalizuje tabele, robi jej zrzut do pliku a następnie wysyła na podany adres e-mail
link do pobrania zrzutu bazy danych winksmiley.jpg
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-2025 Invision Power Services, Inc.