![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 04:04 |