![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 22.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam, Piszę połączenie mojego sklepu internetowego z API jednej z hurtowni.
Muszę pobrać wszystkie produkty wraz z ich informacjami (opis, zdjęcia, id itp itd). Produktów jest około 20 tyś. Cały mój kod pobierania tego wygląda tak: Kod foreach($kategorie as $kat) { $config['CategoryId'] = $kat['Id']; //dodanie do config zmiennej id kategorii $katalog = $this->client->getProductList($config); $produkty_temp[$kat['Id']] = $katalog->getProductListResult->Products->rowProductList; //pobranie produktów dla danych kategorii } $config = array( //config dla pobrania informacji o produkcie 'SessionKey' => $this->sesja['SessionKey'], 'Language' => 'pl-PL', 'Currency' => 'PLN', 'PoductId' => 0 ); $produkty = array( //tablica przechowująca konkretne produkty, wraz z informacjami 'Nazwa' =>0, 'Kategoria_Id' =>0, 'Obrazki' =>array(), 'Cena_Netto' =>0, 'Opis' =>0, 'Id' =>0, 'Kod_Produktu' =>0, ); foreach ($produkty_temp as $klucz => $produkt) { foreach($produkt as $prod) { if(isset($prod->Id)) { $config['ProductId'] = $prod->Id; $prod = $this->client->getProductInfo($config); $prod = $prod->getProductInfoResult->Products; if(isset($prod->rowProductInfo)) { $Prod = $prod->rowProductInfo; if(isset($Prod->Id) && isset($Prod->Name) && isset($Prod->PriceNett)) { $produkty[$i]['Nazwa'] = $Prod->Name; $produkty[$i]['Id'] = $Prod->Id; $produkty[$i]['Cena_Netto'] = $Prod->PriceNett; if(isset($Prod->Description) && $Prod->Description != "") $produkty[$i]['Opis'] = $Prod->Description; if(isset($Prod->ImgURL->string)) { if(is_array($Prod->ImgURL->string)) { $obrazki = array(); foreach($Prod->ImgURL->string as $obrazek) { $obrazki[] = $obrazek; } $produkty[$i]['Obrazki'] = $obrazki; } else { $produkty[$i]['Obrazki'] = $Prod->ImgURL->string; } } $i++; } $this->client->doNoop($this->sesja); } } zmienna $kategorie to tablica zawierająca listę kategorii. Jest ich dokładnie 347. Później muszę pobrać każdy produkt dając jako argument funkcji getProductInfo tablicę z konfikuracją w której jest właśnie id kategorii. Więc najpierw tworzę $produkt_temp gdzie kluczem jest id kategorii a wartością lista produktów z tej kategorii. Potem dla każdego indeksu tej tablicy tworzę już zmienną $produkt w której przechowuje konkretne produkty wraz z ich informacjami. Te wszystkie warunki niestety są potrzebne bo zdarza się (nie wiem czemu) że jest tam produkt który nie ma id lub nie ma ceny itp itd. A te zmienne są potrzebne. ImgURL czasami jest tablicą a czasami jest zmienną string. Całość dla około 20 tyś produktów potrafi się robić nawet pare godzin. Można to jakoś zoptymalizować? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 14:22 |