• 14-01-2021, 14:44:17
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar,

    ben 5 siteden birden veri çekmem gerekiyor aynı anda ama array içine alınca hata alıyorum curl ile 5 sitenin linkini birden nasıl ekrana getireiblirim ?
  • 14-01-2021, 14:47:46
    #2
    Proffice adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar,

    ben 5 siteden birden veri çekmem gerekiyor aynı anda ama array içine alınca hata alıyorum curl ile 5 sitenin linkini birden nasıl ekrana getireiblirim ?
    Merhaba
    array içine siteleri aldığınızı varsayalım

    foreach ya da for döngüsü ile curl un her siteye tek tek bağlanması gerekli

    örnek olarak

    $site1_verisi=curl ($site1);
    $site2_verisi=curl ($site2);

    gibi gibi yapıp daha sonra verileri $site1_verisi içerisinden alıp işleyebilirsiniz
    tam olarak kullandığınız koduda eklerseniz daha net dönüşler alabilirsiniz
  • 14-01-2021, 14:50:46
    #3
    Üyeliği durduruldu
    diray67 adlı üyeden alıntı: mesajı görüntüle
    Merhaba
    array içine siteleri aldığınızı varsayalım

    foreach ya da for döngüsü ile curl un her siteye tek tek bağlanması gerekli

    örnek olarak

    $site1_verisi=curl ($site1);
    $site2_verisi=curl ($site2);

    gibi gibi yapıp daha sonra verileri $site1_verisi içerisinden alıp işleyebilirsiniz
    tam olarak kullandığınız koduda eklerseniz daha net dönüşler alabilirsiniz
    Vereyim tabi hocam şimdi şöyle benim 1 sitem var bu sitede arama yapıp bu 5 siteye bağlanıp orada ki verileri getirmesini istiyorum benim siteme

    bunun için ise Curl kodumda şu
    <?php
    
    
    function Baglan($url){    $curl=curl_init();
       curl_setopt($curl, CURLOPT_URL, $url);  
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  
     curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);  
      $cikti = curl_exec($curl);  
     curl_close($curl);  
      return str_replace(array("\n","\t","\r"), null, $cikti);  }
     ?>
    
    if(isset($_POST['arama'])){    $aranan=$_POST['aranan'];
    $arat = baglan("https://www.demo.net/index.php?s=$aranan","https://www.demo2.top/?ara=$aranan","https://www.demo3.com/?s=$aranan");
    
    
    }
    şöyle bi kod var şimdi burada 3 siteye bağlanmam lazım ama ilk siteyi getiriyor diğerlerini getirmiyor foreach de denedim ama olmadı tekrar bi deneyim yani bana burada s= sonra ki tagları aramadan ekrana getirip değişilik yapmam lazım ama hepsini tek çatıda en son nasıl toplayacağımı anlamadım açıkcası
  • 14-01-2021, 14:59:07
    #4
    Proffice adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar,

    ben 5 siteden birden veri çekmem gerekiyor aynı anda ama array içine alınca hata alıyorum curl ile 5 sitenin linkini birden nasıl ekrana getireiblirim ?
    multi curl kullanım.
  • 14-01-2021, 15:10:12
    #5
    Ruxy adlı üyeden alıntı: mesajı görüntüle
    multi curl kullanım.
    hocam haklı siz söylemeseniz ben önericektim;

    buyrun: https://www.php.net/manual/tr/functi...multi-init.php
  • 14-01-2021, 16:13:17
    #6
    Üyeliği durduruldu
    br gün buraya biri gelir buna ihtiyacı olursa diye anlatıyorum yaptım 1 den fazla url çekmek isterseniz bu şekilde yapabilirsiniz
    <?php
    function multi_thread_curl($url_array, $number_threads) {
    
    $curl_array = array_chunk($url_array, $number_threads, $preserve_keys = true);
           foreach($curl_array as $threads) {
              foreach($threads as $key=>$value) {
            ${'ch' . $key} = curl_init();
            curl_setopt(${'ch' . $key}, CURLOPT_URL, $value);        curl_setopt(${'ch' . $key}, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt(${'ch' . $key}, CURLOPT_RETURNTRANSFER, true);        curl_setopt(${'ch' . $key}, CURLOPT_TIMEOUT, 10);
            }
    
               $mh = curl_multi_init();
            curl_multi_add_handle($mh, ${'ch' . $key});
            }
            $active = null;
                do {
            $mrc = curl_multi_exec($mh, $active);
            } while ($mrc == CURLM_CALL_MULTI_PERFORM);
            while ($active && $mrc == CURLM_OK) {
                if (curl_multi_select($mh) != -1) {                do {
                        $mrc = curl_multi_exec($mh, $active);
                    } while ($mrc == CURLM_CALL_MULTI_PERFORM);            }
            }
                 foreach($threads as $key=>$value) {
            $results[$key] = curl_multi_getcontent(${'ch' . $key});
            curl_multi_remove_handle($mh, ${'ch' . $key});
            }
          .        curl_multi_close($mh);
        }
    
        return $results;
    
    
    }
     ?>