Merhaba arkadaslar bu dökümanımda sizlere curl’ün daha hızlı calışması yani bir işlemi birden fazla kaynak kullanarak yapmasını açıklayacağım.
Öncelikle kullanacagımız curl komutlarını yazalım ve açıklayalım.
curl_multi_init() : Çok sayıda cURL tanıtıcısının aynı anda işlem görmesini sağlar.
curl_multi_add_handle() : Yeni bir çoklu cURL tanıtıcısı döndürür
curl_multi_exec() : Her tanıtıcıyı işleme sokar
curl_multi_getcontent() : Belirtilen tanıtıcı için CURLOPT_RETURNTRANSFER seçeneği etkinse tanıtıcının içeriğini bir dizge olarak döndürür.
curl_multi_remove_handle() : Bir tekil tanıtıcıyı bir çoklu tanıtıcıdan siler.
curl_multi_close() : Çoklu tanıtıcıyı kapatır.
Curl multi için kullanacağımız tüm komutları yazdık ve açıkladık.Şimdir bir örnekte bunları kullanarak devam edelim yaptıgımız işlemleride acıklayalım..
function WHM($data) {
global $sayi;
$curlle = array();
$sonuc = array();
$yer_tutucu = curl_multi_init();//curl multi oturumunu başlat
for($i=0;$i<5$i++){// i degiskeni için 5 adet thread aç ve dizi degiskene aktar
$curlle[$i] = curl_init(); //tekli curl oturumu acıyoruz ve coklu oturumla birleştiriyoruz
curl_setopt($curlle[$i], CURLOPT_URL, $data);//Açacagımız url yi belirliyoruz.
curl_setopt($curlle[$i], CURLOPT_RETURNTRANSFER, 1);//Transfer acık
curl_setopt($curlle[$i], CURLOPT_USERAGENT, “Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4”);
curl_setopt($curlle[$i], CURLOPT_COOKIEJAR, dirname(__FILE__).’/cookie.txt’); //Cookie kaydı
curl_setopt($curlle[$i], CURLOPT_COOKIEFILE, dirname(__FILE__).’/cookie.txt’); //Cookie Çerez kaydı
curl_setopt($curlle[$i], CURLOPT_AUTOREFERER, 1); //otomatik referer site ataması
curl_setopt($curlle[$i], CURLOPT_CONNECTTIMEOUT, 10);//Baglantı zaman aşımı
curl_multi_add_handle($yer_tutucu, $curlle[$i]);//Çoklu curl tanıtıcıyı döndür
}$aktif= null;
do {
curl_multi_exec($yer_tutucu, $aktif);//tüm tanıtıcılar icin işlemi başlat
}
while ($aktif> 0);
for ($x=0;$x<$sayi;$x++) {
$html=curl_multi_getcontent($curlle[$x]);//returntransfer etkinse işlemi döndür
//echo $html;
$sonuc[$x] = $html;
curl_multi_remove_handle($yer_tutucu, $curlle[$x]);//tekil işlemi sil
}
curl_multi_close($yer_tutucu); //coklu oturumu kapatreturn $sonuc;
}
Tüm yaptıgımız işlemlerin yanında açıklamaları mevcut bu fonksiyonu kullarak istediğiniz coku işlemi curl ile yapabilirsiniz.Takıldığınız bir işlem yada anlamadığınız herseyi konu altında sorabilirsiniz.Curl ün bu işlevi ile ilgili detaylı anlatım türkçe olarak yoktu umarım faydalı olmuştur.
bu çalışmıyo
Neyi çalışmıyor arkadaşım ? yaz ne gibi bir sorun çıktğını yardımcı olayım..
Kardeş merhabalar kodda ufak tefek noktalama hatası var onun haricinde kod çalışıyor bir sorun yok emeğine sağlık. Şimdi bu kodu çalıştırma ile ilgili bir örnek vererek açıklayabilir misin?
Aynı anda iki işlem yapılacağı zaman New Thread nasıl açılacak işlem nasıl yapılacak.
Örneğin sayfada bir link var ve linkde pdf download edilecek basınca pdf iniyor fakat pdf indirme işlemi bitmeyene kadar sayfada başka linklere tıklanamıyor. Bunu thread ile nasıl yapabiliriz. Senin yazıdğın bu kodla nasıl birleştireceğim. Bir örnek vererek açıklarsan sevinirim. İyi çalışmalar dilerim
Merhaba Arkadaşım bu sadece tek işlem için hızlı bir şekilde çalışma mantıgı yapmaktadır. Dediğin tarz işlemler için .net kullanmanız gerekiyor.
gayet güzel bir anlatım olmuş. teşekkürler.