aniolekx
31.07.2009, 10:53:36
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
31.07.2009, 11:17:38
Podczas zmian w glowej bazie wysylaj np. XMLem, czy zwyklym POSTem informacje o zmianach do innych baz i tam je uaktualniaj.
aniolekx
10.08.2009, 07:38:37
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
10.08.2009, 08:17:41
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
10.08.2009, 09:32:11