• 29-05-2019, 15:22:11
    #1
    Merhabalar,

    Bir curl fonksiyonum var. Veri çektiğim site bazen boş sayfa döndürüyor. Bu durumda curl fonksiyonunun yenilenerek tekrardan istek yollamasını istiyorum böyle birşey mümkün mü ?


    function baglan($url,$ref=false)
    {
    if(!$ref)
    {
    $ref = $url;
    }
    		$ch = curl_init();
    		$timeout = 0;
    		curl_setopt ($ch, CURLOPT_URL, $url);
    		curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    		curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36");
    		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_HEADER, false);
    		curl_setopt($ch, CURLOPT_REFERER,$ref);
    		curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
    		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    		curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
    		$veri= curl_exec($ch);
    		curl_close($ch);
    		return $veri;
    }
  • 29-05-2019, 15:29:43
    #2
    if ($veri=“”){
    Curl kodları
    }

    Şeklinde deneseniz olmaz mı acaba?
  • 29-05-2019, 15:33:54
    #3
    $veri1 = baglan();
    if($veri1 != ''){
    $veriler = $veri1;
    }
    else{
    $veriler = baglan();
    }
    İşlemler

    Mobildeyim hata varsa kusura bakmayın kodları kontrol edip deneyebilirsiniz.
  • 29-05-2019, 15:34:17
    #4
    function baglan($url,$ref=false)
    {
    if(!$ref)
    {
    $ref = $url;
    }
          $ch = curl_init();
          $timeout = 0;
          curl_setopt ($ch, CURLOPT_URL, $url);
          curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36");
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_HEADER, false);
          curl_setopt($ch, CURLOPT_REFERER,$ref);
          curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
          curl_setopt($ch, CURLOPT_TIMEOUT, 15);
          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
          $veri= curl_exec($ch);
          curl_close($ch);
          return $veri;
    }
    while (!empty(bağlan)){
    echo baglan($url, "test");
    }
  • 29-05-2019, 15:34:27
    #5
    Aşağıda ki gibi bir deneme yapabilirsiniz.
    $data_url = 'https://www.r10.net';
    $veri_cek = baglan($data_url);
    
    if( !$veri_cek ){
    $veri_cek = baglan($data_url);
    }
    cUrl bazen veri çekememesi cacert.pem ile alakalı bir sorundan kaynaklanıyor. İnternette küçük bir araştırmayla cacert.pem ekleyerek daha sağlıklı bir fonksiyon oluşturabilirsiniz
  • 29-05-2019, 15:41:39
    #6
    Üyeliği durduruldu
    goto kullanabilirsin.

    yada for döngüsü icine alıp veri gelmişse break atip döngüden çıkartabilirsin.
  • 29-05-2019, 15:53:38
    #7
    Tüm cevaplar için teşekkürler simdi deniyorum,

    İlgili arkadaşları görmek beni çok memnun etti

    edit;

    For döngüsü ile hallettim,
  • 30-05-2019, 13:37:09
    #8
    scrol adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,

    Bir curl fonksiyonum var. Veri çektiğim site bazen boş sayfa döndürüyor. Bu durumda curl fonksiyonunun yenilenerek tekrardan istek yollamasını istiyorum böyle birşey mümkün mü ?


    function baglan($url,$ref=false)
    {
    if(!$ref)
    {
    $ref = $url;
    }
    $ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_REFERER,$ref);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
    $veri= curl_exec($ch);
    curl_close($ch);
    return $veri;
    }
    Farklı şeylerle uğraşmana gerek yok. curl_close($ch) üstüne şu kodu ekle eğer curl veriçekemez ya da zaman aşımından sonra bağlanamazsa sayfayı yeniler.
    if(curl_errno($ch)) {
    header("Refresh:0");
    }
  • 30-05-2019, 17:07:10
    #9
    Cankat adlı üyeden alıntı: mesajı görüntüle
    Farklı şeylerle uğraşmana gerek yok. curl_close($ch) üstüne şu kodu ekle eğer curl veriçekemez ya da zaman aşımından sonra bağlanamazsa sayfayı yeniler.
    if(curl_errno($ch)) {
    header("Refresh:0");
    }
    Veri çekemez değilde, istediğim veriyi vermiyordu. 10 istekten 2-3 tanesinde LimitError veriyordu. Ayrıca o veriyi cacheye aldıgım için dogru veriyi almam şarttı.