Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Aktualizacja między kilkoma bazami, aktualizowanie rekordów z bazy głównej do baz pobocznych
aniolekx
post
Post #1





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

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


Mam bazę która często aktualizuje, kopie tej bazy postawiłem także na innych serwerach, chciałbym napisać skrypt który automatycznie uaktualniał by tabele z produktami

Baza to standardowa baza osCommerce, zastanawiam się jak się do tego zabrać.

Aktualnie po prostu kasuję bazę w phpadminie i wrzucam aktualną wersje, ale w czasie tego zabiegu strony które korzystają z tej bazy są niedostępne...

Zaktualizować potrzebuje 2 tabele odpowiedzialne za produkty (może z czasem będzie tego więcej)

Jak to powinno wyglądać przynajmniej teoretycznie, aby było optymalne, a jeżeli ma ktoś fragment praktycznego kodu to już mógłbym go sobie z powodzeniem zmodyfikować.

W zasadzie wydaje mi się ze powinienem z bazy głównej zebrać wszystkie rekordy za pomocą * i w teraz nie wiem czy update'm mogę przechodzić po tych kolejnych rekordach (z tej *) i wrzucać je tam gdzie klucze się zgadzają, w zasadzie bez sprawdzania czy zawartości się róznią

Czy jednak lepiej skasować dana tabele/czy rekord i wgrać go na nowo ?

Tak jak mówiłem szukam optymalnego rozwiązania, tak aby strony które korzystają z tej bady nie padały na czas aktualizacji
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Podczas zmian w glowej bazie wysylaj np. XMLem, czy zwyklym POSTem informacje o zmianach do innych baz i tam je uaktualniaj.
Go to the top of the page
+Quote Post
aniolekx
post
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

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


Przy takim rozwiązaniu musiał bym ingerować w główny skrypt sklepu, wolał bym tego uniknąć (to by była ostateczność). Chciałbym pobierać dane po ich wprowadzeniu do aktualnej bazy, skrypt który by pobierał aktualne rekordy z bazy i aktualizował w kolejnych, musi być niezależnym bytem.
Go to the top of the page
+Quote Post
linx
post
Post #4





Grupa: Zarejestrowani
Postów: 100
Pomógł: 3
Dołączył: 25.06.2007

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


Stwórz skrypt który generował będzie plik xml (na bazie głównej) i co jakiś czas sprawdzaj z pozostałych baz/skryptów pliki xml i zbieraj zmiany.

Ale jak dla mnie bez ingerencji w skrypt i bazę głównego sklepu może być ciężko, chyba że masz małą ilość rekordów w tej głównej bazie / tabeli i chcesz przewalać ją całą.

Lepiej dodać do tabeli kolumnę w której będzie ostatnia aktualizacja / dodanie wpisu, wtedy do generowanego pliku podajesz dane tylko z jakiegoś tam zakresu czasowego. Poco przewalać całą tabele gdzie np. zmian będzie tylko w 5-10%. A i jeszcze dobrze było by dodać w takim pliku który rekord jest już niedostępny / usunięty.

Bynajmniej mi się tak wydaje.

Pozd.
Go to the top of the page
+Quote Post
vokiel
post
Post #5





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


W takim wypadku może zainteresuj się replikacją. W SQL SERVER jest to dość łatwo zrobić, nie wiem jak w MySQL. Ale są na ten temat materiały, poczytaj, może coś się uda.
http://www.programowaniepc.pl/replikacja_mysql.php
http://web-dev.pl/replikacja-w-mysql
http://www.kitek.pl/2008/02/20/mysql-replikacja/
http://www.eioba.pl/a70093/replikacja_jako...ydajnosci_mysql
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 04:04