Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Aktualizacja między kilkoma bazami
Forum PHP.pl > Forum > Bazy danych > MySQL
aniolekx
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
dr_bonzo
Podczas zmian w glowej bazie wysylaj np. XMLem, czy zwyklym POSTem informacje o zmianach do innych baz i tam je uaktualniaj.
aniolekx
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.
linx
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.
vokiel
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
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.