# Synchronizacja Wielu Sklepów: przewodnik instalacji i konfiguracji

> Kompletny przewodnik po module Synchronizacja Wielu Sklepów: wymagania, webservice, sklepy zdalne, profile push i pull, strategie konfliktów, cron i rozwiązywanie problemów.

- Strona: <https://www.datafirefly.com/pl/documentation/synchronisation-multi-boutiques/>
- Język: pl
- Zaktualizowano: 2026-07-30
- Inne języki: [fr](https://www.datafirefly.com/documentation/synchronisation-multi-boutiques/index.md), [en](https://www.datafirefly.com/en/documentation/multi-store-synchronization/index.md), [es](https://www.datafirefly.com/es/documentation/sincronizacion-multi-tienda/index.md), [de](https://www.datafirefly.com/de/documentation/multi-shop-synchronisation/index.md), [it](https://www.datafirefly.com/it/documentation/sincronizzazione-multi-negozio/index.md), [pt](https://www.datafirefly.com/pt/documentation/synchronisation-multi-boutiques/index.md), [nl](https://www.datafirefly.com/nl/documentation/synchronisation-multi-boutiques/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

Ten przewodnik obejmuje instalację modułu **Synchronizacja Wielu Sklepów**, połączenie dwóch instalacji PrestaShop oraz pełną konfigurację synchronizacji katalogu.

## Wymagania

- Dwie instalacje PrestaShop od 8.0 do 9.x (bazy danych i hosting mogą być odrębne).
- Aktywne rozszerzenie PHP cURL w sklepie, który steruje synchronizacją.
- Włączony webservice w sklepie zdalnym, z dedykowanym kluczem dostępu.

Moduł instaluje się wyłącznie w sklepie, który _steruje_ synchronizacją. Sklep zdalny wymaga jedynie włączonego webservice'u, nie trzeba tam instalować żadnego modułu.

## Instalacja modułu

1. W panelu administracyjnym sklepu sterującego otwórz **Moduły > Menedżer modułów**.
2. Kliknij **Wgraj moduł** i wyślij plik `dfmultisync.zip`.
3. Po instalacji moduł dodaje menu **Parametry zaawansowane > DF Multi-Store Sync**.

## Włączenie webservice'u w sklepie zdalnym

W sklepie, który ma zostać podłączony:

1. Otwórz **Parametry zaawansowane > Webservice**.
2. Ustaw **Włącz webservice PrestaShop** na _Tak_ i zapisz.
3. Kliknij **Dodaj nowy klucz webservice**, wygeneruj klucz, a następnie nadaj uprawnienia `GET`, `POST`, `PUT` i `DELETE` na zasobach: `categories`, `products`, `images`, `combinations`, `stock_availables`, `specific_prices` oraz `languages`.
4. Zapisz i skopiuj wygenerowany klucz.

Bez uprawnienia `DELETE` na zasobie `specific_prices` synchronizacja cen specyficznych zakończy się błędem: moduł zastępuje zdalny zestaw przez usunięcie i ponowne utworzenie.

## Dodanie sklepu zdalnego

1. Przejdź do **DF Multi-Store Sync > Sklepy zdalne**, a następnie **Dodaj sklep zdalny**.
2. Podaj nazwę, adres główny sklepu zdalnego (np. `https://sklep-b.przyklad.com`) oraz skopiowany wcześniej klucz webservice.
3. Zapisz, po czym kliknij **Test** na liście, aby sprawdzić połączenie.

Przycisk **Test** faktycznie odpytuje zdalny webservice. Jeśli test się nie powiedzie, sprawdź adres URL (razem z protokołem `https://`), klucz oraz to, czy webservice jest rzeczywiście włączony po stronie zdalnej.

## Tworzenie profilu synchronizacji

Profil opisuje, _co_ synchronizować, _w którą stronę_ i _jak_ rozstrzygać konflikty.

### Kierunek: push lub pull

- **Push**: bieżący sklep jest źródłem i wysyła swoje dane do sklepu zdalnego.
- **Pull**: sklep zdalny jest źródłem, a bieżący sklep odbiera jego dane.

### Encje

Wybierz encje do synchronizacji. Zawsze przetwarzane są w tej kolejności, aby zachować zależności: **kategorie, produkty, stany magazynowe, ceny specyficzne**.

### Opcje

- **Synchronizuj zdjęcia**: w trybie push wysyłane są nowe zdjęcia lokalne, w trybie pull zdjęcia pobierane są przy tworzeniu produktu.
- **Synchronizuj ceny specyficzne**: dostępne wyłącznie w trybie push.
- **Rozmiar partii**: liczba encji przetwarzanych w jednym cyklu (od 1 do 25). Zmniejsz ją, jeśli serwer zdalny jest wolny.

## Strategie konfliktów

Konflikt powstaje, gdy oba sklepy zmodyfikowały tę samą kartę od czasu ostatniej synchronizacji. Dostępne są cztery strategie:

- **Wygrywa źródło**: źródło zawsze nadpisuje cel.
- **Wygrywa cel**: encje w konflikcie są pomijane.
- **Wygrywa nowszy wpis**: porównywane są daty modyfikacji.
- **Ręcznie**: konflikty trafiają do kolejki do rozstrzygnięcia.

## Pierwsza synchronizacja

1. Otwórz **Pulpit** modułu.
2. W wierszu profilu kliknij **Uruchom teraz**.
3. Synchronizacja wykonuje się partiami: pasek postępu pokazuje na bieżąco liczbę encji utworzonych, zaktualizowanych, pominiętych, w konflikcie i błędnych.

Synchronizacja pracuje w ramach budżetu czasu (domyślnie 25 sekund) i automatycznie wznawia się w miejscu zatrzymania. Przy dużym katalogu kolejne cykle następują po sobie bez ingerencji użytkownika.

## Automatyzacja przez cron

1. Włącz opcję **Cron** na wybranych profilach.
2. Skopiuj adres URL crona wyświetlony na pulpicie (zabezpieczony tokenem).
3. Dodaj go do crontab swojego serwera, na przykład co piętnaście minut:

```
*/15 * * * * wget -q -O /dev/null "https://twoj-sklep.com/module/dfmultisync/cron?token=TWOJ_TOKEN"
```

Token w adresie crona jest poufny: pozwala uruchamiać synchronizacje. Nie udostępniaj go i nie publikuj publicznie.

## Rozwiązywanie konfliktów

Przy strategii **Ręcznie** konflikty gromadzą się w zakładce **Konflikty**. Dla każdego oczekującego wiersza dostępne są opcje:

- **Zachowaj lokalne**: wymusza wysłanie (push) wersji lokalnej.
- **Zachowaj zdalne**: wymusza pobranie (pull) wersji zdalnej.
- **Pomiń**: oznacza konflikt jako obsłużony bez przesyłania danych.

## Dzienniki i monitorowanie

Zakładka **Dzienniki** przechowuje historię operacji (informacja, ostrzeżenie, błąd), z filtrowaniem po poziomie i dacie. Dzienniki są automatycznie czyszczone po 30 dniach.

## Rozwiązywanie problemów

### Test połączenia kończy się niepowodzeniem

Sprawdź, czy webservice jest włączony po stronie zdalnej, czy klucz jest poprawny i czy jego profil uprawnień obejmuje wymienione wyżej zasoby. Upewnij się, że adres URL zawiera `https://`.

### Część produktów jest pomijana

Moduł paruje produkty i warianty po **referencji**. Produkt bez referencji, albo taki, którego referencja różni się między sklepami, nie zostanie sparowany na potrzeby stanów magazynowych. Zadbaj o spójne referencje.

### Ceny specyficzne się nie synchronizują

Synchronizacja cen specyficznych działa **wyłącznie w trybie push** i wymaga uprawnienia `DELETE` na zasobie `specific_prices` po stronie zdalnej.

### Synchronizacja wydaje się wolna

Zmniejsz rozmiar partii w profilu i pozwól cronowi wykonywać kolejne cykle. Pierwszy przebieg jest zawsze najdłuższy, kolejne przesyłają tylko encje faktycznie zmienione.
