1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

W TRAKCIE Clickshop webapi i czas działania skryptu

Dyskusja w 'Sklep internetowy eSklep' rozpoczęta przez użytkownika javor1500, 2 Lipiec 2017.

  1. javor1500

    javor1500 Nowy użytkownik

    Wiadomości:
    2
    Docenione treści:
    0
    Witam,

    Mam problem związany z pobieraniem danych produktów. Otóż skrypt php pobierający dane działa tylko 25-26 sekund i pobierane jest tylko około 800 - 900 produktów (z 6000 ). W czym może byc problem?

    Wykonywanie skryptu php u mnie na serwerze to 360 sekund.
     
  2. papux

    papux Laureat

    Wiadomości:
    401
    Docenione treści:
    114
    Ale skąd jest pobierane i co? Jaki skrypt wykonujesz na serwerze który korzysta w API clickshopa?
    nie rozumiem twojego pytania.
    Sprecyzuj bardziej problem.
     
  3. javor1500

    javor1500 Nowy użytkownik

    Wiadomości:
    2
    Docenione treści:
    0
    Witaj,

    Troszkę rozgryzłem temat - otóż poniżej kod który sklejam z gotowców (nie jestem w tym biegły)

    Mam założoną bazę + sklep z którego muszę pobrać dane i zapisać je do bazy. Skrypt łączy się z api, pobiera część danych (przerywa wykonywanie).

    Do bazy niestety zapisuje puste rekordy (lub zapisuje te którę ustawię na sztywno-zapis do bazy działą).


    Kod:
    <?php
    /**
    set_time_limit(1000);
    
    
     * Logowanie do API
     *
     * @param resource $c cURL resource handle
     * @param string $login Login użytkownika
     * @param string $password Hasło użytkownika
     * @return string Indentyfikatorr sesji użytkownika
     */
    function login($c, $login, $password) {
        $params = Array(
            "method" => "login",
            "params" => Array($login, $password)
        );
        curl_setopt($c, CURLOPT_POSTFIELDS, "json=" . json_encode($params));
        $result = (Array) json_decode(curl_exec($c));
        if (isset($result['error'])) {
            return null;
        } else {
            return $result[0];
        }
    }
    
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, 'http://xxxx/webapi/json/');
    curl_setopt($c, CURLOPT_POST, true);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    
    // zalogowanie użytkownika i pobranie identyfikatora sesji
    $session = login($c, "logindoapi", "hasłodoapi");
    
    if ($session != null) {
        $params = Array(
            "method" => "call",
            "params" => Array($session, "product.list",
                    Array(true, true, true, true, true,
                          
                        )
                )
        );
        // zakodowanie parametrów dla metody POST
        $postParams = "json=" . json_encode($params);
        curl_setopt($c, CURLOPT_POSTFIELDS, $postParams);
        // dekodowanie rezultatu w formacie JSON do tablicy result
        $data = curl_exec($c);
        $result = (Array)json_decode($data, true);
      
        
        
        
         // sprawdzenie, czy wystąpił błąd
        if (isset($result['error'])) {
            echo "Wystąpił błąd: " . $result['error'] . ", kod: " . $result['code'];
        } else {
            foreach ($result as $item) {
                $product = (Array)$item;
    
                echo "Id: " . $product['product_id'] . "<br>";
    
                $translations = (Array)$product['translations'];
                $translPL = (Array)$translations['pl_PL'];
                echo "Nazwa w języku polskim: " . $translPL['name'] . "<br>";
    
                $stock = (Array)$product['stock'];
                echo "Cena: " . $stock['price'] . "<br>";
                echo "Stan magazynowy: " . $stock['stock'] . "<br>";
    
                $gfx = (Array)$product['images'];
                foreach ($gfx as $g) {
                    $image = (Array)$g;
                    echo "Id zdjęcia: " . $image['gfx_id'] . "<br>";
                }
    
                $attributes = (Array)$product['attributes'];
                foreach ($attributes as $attGId => $attG) {
                    echo "Id grupy atrybutów: " . $attGId . "<br>";
                    $attGroup = (Array)$attG;
                    foreach ($attGroup as $attVId => $attV) {
                        echo " - id atrybutu: " . $attVId . ", wartość: " . $attV . "<br>";
                    }
                }
    
                echo "<hr><br>";
            }
        }
    } else {
        echo "Wystąpił błąd logowania";
    }
    
    
    
        $con = mysql_connect("localhost","login","hasło") or die('Could not connect: ' . mysql_error());
        mysql_select_db("zegarki", $con);
     
    
        $product_id = $product['product_id'];
        $name = 'name';
        $price = 'price';
    
    
    //insert into mysql table
        $sql = "INSERT INTO zegarki(product_id, name, price)
        VALUES('$product_id', '$name', '$price')";
        if(!mysql_query($sql,$con))
        {
            die('Error : ' . mysql_error());
        }
      
    curl_close($c);   
    ?>
     
  4. Mariusz

    Mariusz pomoc.home.pl home.pl Administrator forum

    Wiadomości:
    3 088
    Docenione treści:
    302
    Wysłałem zapytanie z konsultacją do naszych specjalistów (numer sprawy: FEEDBACK-1186). Wrócę tutaj do tematu na forum, gdy uzyskam informacje na ten temat.
     
  5. Mariusz

    Mariusz pomoc.home.pl home.pl Administrator forum

    Wiadomości:
    3 088
    Docenione treści:
    302
    @javor1500 bardzo proszę o wywołanie skryptu i przesłanie do mnie w wiadomości prywatnej czas tego wywołania. Musimy sprawdzić logi.
     
  6. TheL

    TheL @Lider VIP Beta-tester

    Wiadomości:
    2 400
    Docenione treści:
    532
    wg mnie to on jest nieco niezoptymalizowany, sprawdź najpierw czy poprawnie listuje Ci rekordy na ekranie.
     

Poleć forum znajomym