• 04-11-2020, 22:12:51
    #1
    Arkadaşlar merhaba.
    Acemice bir işe soyundum

    Şimdi konu şu.
    N11 kategori ağacını çekmeye çalışıyorum.

    Ana Kategori - Alt kategori - Alt Kategorinin Alt Kategorisi ...

    Şimdi şöyle bir problem var.
    Bu Kategorileri çekebiliyorum fakat belli bir noktada sorgu duruyor.

    Bazen başlarken
    bazende ortalara geldiğinde.

    Kodlarım Şöyle:
    class.php dosyam
       public function GetTopLevelCategories() {
            $this->setUrl('https://api.n11.com/ws/CategoryService.wsdl');
            return self::$_sclient->GetTopLevelCategories(self::$_parameters);
        }
        public function GetSubCategories($UstKategori) {
            $this->setUrl('https://api.n11.com/ws/CategoryService.wsdl');
            self::$_parameters['categoryId'] = $UstKategori;
            return self::$_sclient->GetSubCategories(self::$_parameters);
        }
    n11 kategorilerini çektiğim dosyam

    <?php
    $categories = $n11->GetTopLevelCategories();
    $say=count($categories->categoryList->category);
    
     for($i = 0; $i < $say; $i++)
     { ?>
    
         <input type="text" value="<?php echo $categories->categoryList->category[$i]->id; ?>"></input>
         <input type="text" value="<?php echo $categories->categoryList->category[$i]->name; ?>"></input><br>
    
    
    
     <?php
    
    
         $categoriess = $n11->GetSubCategories($categories->categoryList->category[$i]->id);
         $say2=count($categoriess->category->subCategoryList->subCategory);
    
     for($ii = 0; $ii < $say2; $ii++)
     {
         echo "-->". $categoriess->category->subCategoryList->subCategory[$ii]->id;
         echo " ". $categoriess->category->subCategoryList->subCategory[$ii]->name; echo "<br>";
    
    
    
     }
     } ?>
    buradada error_log dosyamda aldığım hata:

    [04-Nov-2020 18:44:59 UTC] PHP Fatal error:  Uncaught SoapFault exception: [HTTP] Too Many Requests in /home/webdeofi/public_html/pazaryeri/ayarlar/class.php:38
    Stack trace:
    #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://api.n11...', '', 1, 0)
    #1 /home/webdeofi/public_html/pazaryeri/ayarlar/class.php(38): SoapClient->__call('GetSubCategorie...', Array)
    #2 /home/webdeofi/public_html/pazaryeri/ayarlar/kategoriler.php(26): N11->GetSubCategories(1000210)
    #3 {main}
      thrown in /home/webdeofi/public_html/pazaryeri/ayarlar/class.php on line 38
    hatanın kaynağı nedir yardımcı olabilir misiniz
  • 04-11-2020, 22:18:32
    #2
    API Rate limitleri aşıyorsunuz sanırım [HTTP] Too Many Requests vermiş hatada. N11 API servisleri hakkında pek bilgim yok fakat gönderdiğinizden bu anlaşılıyor. Daha yavaş ve az istekler göndermelisiniz.
  • 04-11-2020, 22:21:22
    #3
    TDBilisim adlı üyeden alıntı: mesajı görüntüle
    API Rate limitleri aşıyorsunuz sanırım [HTTP] Too Many Requests vermiş hatada. N11 API servisleri hakkında pek bilgim yok fakat gönderdiğinizden bu anlaşılıyor. Daha yavaş ve az istekler göndermelisiniz.
    Bunu n11 sunucuları mı engelliyor benim sunucum ile alakalı mı?
    Burada şunu mu yapmalıyım. Önce ana kategorileri sonra alt kategorileri sonra alt kategorinin alt kategorisini mi çekmeliyim.

    Yada istekleri nasıl azaltabilirim
  • 04-11-2020, 22:25:43
    #4
    emrezsy adlı üyeden alıntı: mesajı görüntüle
    Bunu n11 sunucuları mı engelliyor benim sunucum ile alakalı mı?
    Burada şunu mu yapmalıyım. Önce ana kategorileri sonra alt kategorileri sonra alt kategorinin alt kategorisini mi çekmeliyim.

    Yada istekleri nasıl azaltabilirim
    For döngüsünde tüm kategorileri bir anda çekmeye çalışıyorsunuz sanırım tam dikkatli incelemedim ama bundan dolayı hata vermesi çok olası. Belirli sayılar halinde grup grup çekin veya execution time derdiniz yoksa for döngüsünün içinde isteklerden önce az miktarda sleep değeri koyun. n11 sunucuları engelliyordur hocam çok fazla miktarda istek yaptığınızda.
  • 04-11-2020, 22:27:45
    #5
    TDBilisim adlı üyeden alıntı: mesajı görüntüle
    For döngüsünde tüm kategorileri bir anda çekmeye çalışıyorsunuz sanırım tam dikkatli incelemedim ama bundan dolayı hata vermesi çok olası. Belirli sayılar halinde grup grup çekin veya execution time derdiniz yoksa for döngüsünün içinde isteklerden önce az miktarda sleep değeri koyun.
    sleep değeri için ufak bir örnek vermeniz mümkünmü uygulayayım.
    execution time derdim yok
  • 04-11-2020, 22:30:59
    #6
    emrezsy adlı üyeden alıntı: mesajı görüntüle
    sleep değeri için ufak bir örnek vermeniz mümkünmü uygulayayım.
    execution time derdim yok
    Hocam for döngüsünde grup grup çekiyorsa onun en altına diğer $i değerine geçmeden beklemesi için usleep veya sleep koyabilirsiniz usleep koymanız daha yararlı çok fazla bekleme olur yoksa.
    https://www.php.net/manual/tr/function.usleep.php
    https://www.php.net/manual/tr/function.sleep.php
    https://stackoverflow.com/questions/...hp-sleep-delay
    İnceleyebilirsiniz.

    Ek olarak sürekli istek göndermek yerine cache sistemi yapabilirsiniz hocam.
  • 04-11-2020, 22:49:26
    #7
    TDBilisim adlı üyeden alıntı: mesajı görüntüle
    Hocam for döngüsünde grup grup çekiyorsa onun en altına diğer $i değerine geçmeden beklemesi için usleep veya sleep koyabilirsiniz usleep koymanız daha yararlı çok fazla bekleme olur yoksa.
    https://www.php.net/manual/tr/function.usleep.php
    https://www.php.net/manual/tr/function.sleep.php
    https://stackoverflow.com/questions/...hp-sleep-delay
    İnceleyebilirsiniz.

    Ek olarak sürekli istek göndermek yerine cache sistemi yapabilirsiniz hocam.

    Hocam sağolun inceledim ve uyguladım fakat sonuç aynı

    Hem usleep hemde sleep olarak farklı değerler kullanarak denedim.

    uygulamam şu şekilde oldu
    for($i = 0; $i < $say; $i++)
    {  usleep(300000); ?>
    
        <input type="text" value="<?php echo $categories->categoryList->category[$i]->id; ?>"></input>
        <input type="text" value="<?php echo $categories->categoryList->category[$i]->name; ?>"></input><br>
  • 04-11-2020, 23:06:58
    #8
    emrezsy adlı üyeden alıntı: mesajı görüntüle
    Hocam sağolun inceledim ve uyguladım fakat sonuç aynı

    Hem usleep hemde sleep olarak farklı değerler kullanarak denedim.

    uygulamam şu şekilde oldu
    for($i = 0; $i < $say; $i++)
    {  usleep(300000); ?>
    
        <input type="text" value="<?php echo $categories->categoryList->category[$i]->id; ?>"></input>
        <input type="text" value="<?php echo $categories->categoryList->category[$i]->name; ?>"></input><br>

    Hocam belki çok fazla istekten belirli süre için normal limitlerin altına kısıtlanmış olabilirsiniz yarın deneyin ilk önce tüm kategorileri değil de 3-4 kategori için deneyin öyle test edin.
  • 07-12-2020, 12:34:50
    #9
    emrezsy adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar merhaba.
    Acemice bir işe soyundum

    Şimdi konu şu.
    N11 kategori ağacını çekmeye çalışıyorum.

    Ana Kategori - Alt kategori - Alt Kategorinin Alt Kategorisi ...

    Şimdi şöyle bir problem var.
    Bu Kategorileri çekebiliyorum fakat belli bir noktada sorgu duruyor.

    Bazen başlarken
    bazende ortalara geldiğinde.

    Kodlarım Şöyle:
    class.php dosyam
       public function GetTopLevelCategories() {
            $this->setUrl('https://api.n11.com/ws/CategoryService.wsdl');
            return self::$_sclient->GetTopLevelCategories(self::$_parameters);
        }
        public function GetSubCategories($UstKategori) {
            $this->setUrl('https://api.n11.com/ws/CategoryService.wsdl');
            self::$_parameters['categoryId'] = $UstKategori;
            return self::$_sclient->GetSubCategories(self::$_parameters);
        }
    n11 kategorilerini çektiğim dosyam

    <?php
    $categories = $n11->GetTopLevelCategories();
    $say=count($categories->categoryList->category);
    
     for($i = 0; $i < $say; $i++)
     { ?>
    
         <input type="text" value="<?php echo $categories->categoryList->category[$i]->id; ?>"></input>
         <input type="text" value="<?php echo $categories->categoryList->category[$i]->name; ?>"></input><br>
    
    
    
     <?php
    
    
         $categoriess = $n11->GetSubCategories($categories->categoryList->category[$i]->id);
         $say2=count($categoriess->category->subCategoryList->subCategory);
    
     for($ii = 0; $ii < $say2; $ii++)
     {
         echo "-->". $categoriess->category->subCategoryList->subCategory[$ii]->id;
         echo " ". $categoriess->category->subCategoryList->subCategory[$ii]->name; echo "<br>";
    
    
    
     }
     } ?>
    buradada error_log dosyamda aldığım hata:

    [04-Nov-2020 18:44:59 UTC] PHP Fatal error:  Uncaught SoapFault exception: [HTTP] Too Many Requests in /home/webdeofi/public_html/pazaryeri/ayarlar/class.php:38
    Stack trace:
    #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://api.n11...', '', 1, 0)
    #1 /home/webdeofi/public_html/pazaryeri/ayarlar/class.php(38): SoapClient->__call('GetSubCategorie...', Array)
    #2 /home/webdeofi/public_html/pazaryeri/ayarlar/kategoriler.php(26): N11->GetSubCategories(1000210)
    #3 {main}
      thrown in /home/webdeofi/public_html/pazaryeri/ayarlar/class.php on line 38
    hatanın kaynağı nedir yardımcı olabilir misiniz


    Arkaşdalar selam. Problemim hala devam ediyor. Kategori parça parça çekmenin karşı tarafa çok fazla istek göndermemenin bir yöntemi var mıdır?

    Usta arkadaşlardan rica ediyorum Yardımcı olabilir misiniz?