Pomysł na synchronizacje krok po kroku z chunkowaniem i limitem, może tak:
Kod
public function synchronizationDataChunks()
{
$dataTotal = 1000;
$chunkSize = 100;
$offset = 0;
while ($offset < $dataTotal) {
$products = $this->fetchProducts($offset, $chunkSize); // Etap 1. Pobieranie danych
// Etap 2. Kontrola.
$this->saveProducts($products); // Etap 3. Zapis danych
$offset += $chunkSize;
echo "Synchronized products from offset $offset";
}
echo "Synchronization complete!";
}
Etapy:
1. Pobieramy dane z Baselinkera.
2. Dochodzi etap Kontroli, gdzie mam plik .csv z nowymi produktami i/lub nowymi cenami starych produktów.
Odbiorca życzy sobie mieć kontrolę nad plikiem .csv i móc aktualizować ceny produktów w pliku - do zrobienia podstrona do edycji pliku .csv
Pytanie: aby móc zgrać produkty Baselinkera z produktami w pliku .csv, chyba muszę zapisać pobrane produkty? Gdzie je zapisać do pliku, może do bazy, ale są to takie tymczasowe, chwilowe dane i tworzyć dla tych danych specjalnie tabele w bazie?
3. Zapis danych. Kiedy pobiorę dane z Baselinkera, następnie zaktualizuje te dane z danymi w pliku .csv można przejść do synchronizacji i zapisać dane w sklepie.
Na tę chwilę taki jest plan.
Cytat
Poza tym, warto też wrzuć taki import na kolejkę i skonsumować niezależnie w runtime'ie.
Import na kolejkę i runtime - tak teoretycznie kumam o co chodzi, ale to trzeba byłoby zrobić w moim $this->fetchProducts() czyli nie ma opcji pójść na łatwiznę i pobrać sobie wszystko (tysiące produktów) na raz, gdzieś je zapisać (tylko gdzie) do edycji z danymi pliku .csv, a po edycji eksportować pomysłem na chunkowanie synchronizationDataChunks(), eksport i zapis porcjami.