• 26-10-2015, 17:14:48
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar curl ile bir siteye bağlanıp
    ifle kontrol yapıp sonucu ekrana basıyorum lakin
    ben bu işlemi 1 sitede değil 1den fazla site ekliyerek hepsinin sonucunu ekrana basmak istiyorum
    bunu nasıl yapabilirim ?
  • 26-10-2015, 17:21:51
    #2
    function multiRequest($data, $options = array()) {
    
    		  $curly = array();
    		  $result = array();
    		 
    		  $mh = curl_multi_init();
    		 
    		  foreach ($data as $id => $d) {
    		 
    			$curly[$id] = curl_init();
    		 
    			$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
    			curl_setopt($curly[$id], CURLOPT_URL,            $url);
    			curl_setopt($curly[$id], CURLOPT_HEADER,         0);
    			curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
    			curl_setopt($curly[$id], CURLOPT_TIMEOUT, 30);
    			curl_setopt($curly[$id], CURLOPT_CONNECTTIMEOUT, 60);
    			curl_setopt($curly[$id], CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    			curl_setopt($curly[$id], CURLOPT_ENCODING,'gzip');
    		 
    			if (is_array($d)) {
    			  if (!empty($d['post'])) {
    				curl_setopt($curly[$id], CURLOPT_POST,       1);
    				curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
    			  }
    			}
    		 
    			if (!empty($options)) {
    			  curl_setopt_array($curly[$id], $options);
    			}
    		 
    			curl_multi_add_handle($mh, $curly[$id]);
    		  }
    		 
    		  $running = null;
    		  do {
    			curl_multi_exec($mh, $running);
    		  } while($running > 0);
    		 
    		  foreach($curly as $id => $c) {
    			$result[$id] = curl_multi_getcontent($c);
    			curl_multi_remove_handle($mh, $c);
    		  }
    
    		  curl_multi_close($mh);
    		 
    		  return $result;
    		}
    
                    $links = Array("site1", "site2", "site3");
    
                    $multi = multiRequest($links);
    
                    echo $multi[0]; //Site1
                    echo $multi[1]; //Site2
                    echo $multi[2]; //Site3
                    //For döngüsüne sokulabilir.
    İşinize yarar umarım. Kodları buraya yazarken denemedim fakat kullandığım bir betik.
  • 26-10-2015, 17:54:45
    #3
    Üyeliği durduruldu
    cenkkoroglu adlı üyeden alıntı: mesajı görüntüle
    function multiRequest($data, $options = array()) {
    
    		  $curly = array();
    		  $result = array();
    		 
    		  $mh = curl_multi_init();
    		 
    		  foreach ($data as $id => $d) {
    		 
    			$curly[$id] = curl_init();
    		 
    			$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
    			curl_setopt($curly[$id], CURLOPT_URL,            $url);
    			curl_setopt($curly[$id], CURLOPT_HEADER,         0);
    			curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
    			curl_setopt($curly[$id], CURLOPT_TIMEOUT, 30);
    			curl_setopt($curly[$id], CURLOPT_CONNECTTIMEOUT, 60);
    			curl_setopt($curly[$id], CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    			curl_setopt($curly[$id], CURLOPT_ENCODING,'gzip');
    		 
    			if (is_array($d)) {
    			  if (!empty($d['post'])) {
    				curl_setopt($curly[$id], CURLOPT_POST,       1);
    				curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
    			  }
    			}
    		 
    			if (!empty($options)) {
    			  curl_setopt_array($curly[$id], $options);
    			}
    		 
    			curl_multi_add_handle($mh, $curly[$id]);
    		  }
    		 
    		  $running = null;
    		  do {
    			curl_multi_exec($mh, $running);
    		  } while($running > 0);
    		 
    		  foreach($curly as $id => $c) {
    			$result[$id] = curl_multi_getcontent($c);
    			curl_multi_remove_handle($mh, $c);
    		  }
    
    		  curl_multi_close($mh);
    		 
    		  return $result;
    		}
    
                    $links = Array("site1", "site2", "site3");
    
                    $multi = multiRequest($links);
    
                    echo $multi[0]; //Site1
                    echo $multi[1]; //Site2
                    echo $multi[2]; //Site3
                    //For döngüsüne sokulabilir.
    İşinize yarar umarım. Kodları buraya yazarken denemedim fakat kullandığım bir betik.
    teşekkür ederim işe yaradı
  • 26-10-2015, 17:55:56
    #4
    Rica ederim kolay gelsin.