Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML] Automatyczna optymalizacja tabel w bazie
patryk9200
post 28.03.2009, 00:54:08
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
RafaelX
post 28.03.2009, 01:04:36
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował RafaelX 28.03.2009, 01:07:57
Go to the top of the page
+Quote Post
patryk9200
post 28.03.2009, 11:24:49
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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??
Go to the top of the page
+Quote Post
kipero
post 28.03.2009, 11:27:11
Post #4





Grupa: Zarejestrowani
Postów: 233
Pomógł: 50
Dołączył: 28.10.2006
Skąd: Radom

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
patryk9200
post 28.03.2009, 14:51:44
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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??
Go to the top of the page
+Quote Post
RafaelX
post 28.03.2009, 16:02:42
Post #6





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
patryk9200
post 28.03.2009, 21:45:12
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
Fifi209
post 28.03.2009, 21:48:18
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Podstawowe pytanie, masz prawo do zapisu w tym katalogu?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
patryk9200
post 29.03.2009, 10:04:49
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:59