Önceki yazımız da curl kütüphanesi ile veri çekimi işlemine hafiften giriş yapıp biraz detaylara inmiştik. Bu yazımızda ise biraz daha detaylar üzerinde duracağız.
Şöyle geçen yazı da neler yaptığımıza bakarsak;
- Curl kütüphanesi için curl fonksiyonunu çalıştırdık.
- Veri alacağımız adrese bağlandık.
- Bağlandığımız adresten verileri çektik.
- Adrese tarayıcı bilgisi ve ip bilgilerimizi gönderdik.
Eğer yukarıda yer alan özellikler ile sıkıntı yaşıyorsanız, Curl Kütüphanesi ile Veri Çekimi – #1 isimli yazımızda giderebilirsiniz sıkıntınızı.
Yeni yazımıza giriş yapalım. İlk olarak önceki yazıda,
Eğer verilerimizi çekip hemen ekrana yazdırmak istemezsek curl_exec() fonksiyonunu bir değişkene atayabiliriz.
demiştik. Eğer ekrana yazdırmak istemezsek bir başka yol daha mevcut. Bu yolu kullanmamamızı sağlayacak kalıba göz atalım.
curl_setopt( curl oturumu , CURLOPT_RETURNTRANSFER , değer );
Gördüğünüz üzere CURLOPT_RETURNTRANSFER fonksiyonu ile sağlıyoruz bu işlemi. Burada yer alan değer parametresi; true
, false
, 1
ve 0
değerlerini alabilir.
Parametremiz, true
veya 1
değerlerini aldığı zaman curl oturumu ile çektiğimiz verileri, ekrana yazdırmaz.
Aynı şekilde false
veya 0
değerlerini kullandığımızda da ekrana yazdırır.
Örnek vermemiz gerekirse eğer;
// Ekrana Yazdırmayanlar curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true ); // Ekrana Yazdıranlar curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 0 ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER , false );
Ayrıca oldu ya önceden tıkır tıkır bağlandığımız siteye bağlanamaz olduk, veriler gelmiyor. Niye gelmediğini öğrenip bunu ekrana yazdırabiliriz.
Bunu için CURLOPT_HEADER fonksiyonunu kullanacağız. Bu fonksiyonun değerleri olan true
, false
, 1
ve 0
da tıpkı CURLOPT_RETURNTRANSFER fonksiyonundaki gibi aynı şekilde kullanılıyor.
Bu fonksiyonun yapısı şu şekildedir:
curl_setopt( curl oturumu , CURLOPT_HEADER , değer );
Örnekte kullanılmış hali ise,
$ch = curl_init(); curl_setopt( $ch , CURLOPT_URL , "http://goo.gl/up6yH8" ); curl_setopt( $ch , CURLOPT_HEADER , 1 ); $cekilenveri = curl_exec($ch); curl_close($ch); echo $cekilenveri;
Gördüğünüz üzere kullandığımız örnekte bağlandığımız kaynak kısaltılmış link ile yönlendirilmiş halde, eğer biz bu yönlendirmeye de devam etmek istiyorsak, CURLOPT_FOLLOWLOCATION fonksiyonunu kullanacağız. CURLOPT_FOLLOWLOCATION fonksiyonu da önceki iki fonksiyon ile aynı yapıda ek olarak yapısını yazmak yerine direkt olarak örnekte göstereceğim.
$ch = curl_init(); curl_setopt( $ch , CURLOPT_URL , "http://goo.gl/up6yH8" ); curl_setopt( $ch , CURLOPT_FOLLOWLOCATION , 1 ); $cekilenveri = curl_exec($ch); curl_close($ch); echo $cekilenveri;
Bu örneği sadece kısaltılmış linkler için düşünmeyin, iç içe geçirilmiş aklınıza gelen tüm adreslerde kullanabilirsiniz.
Bağlandığınız kaynak çok yoğun trafikli bir sunucu olabilir, ara sıra bağlantıda problem yaşatabilir. Bu bağlantı problemlerinde de sayfanızı uzun uzun bekletir. Bu beklemeyi önlemek ve direkt olarak işlemi yarıda keserek curl oturumunu kapatmak isterseniz, CURLOPT_TIMEOUT fonksiyonunu kullanmanız gerekir. Bu fonksiyonun yapısı şu şekildedir:
curl_setopt(curl oturumu, CURLOPT_TIMEOUT, saniye cinsinden maksimum bekleme süresi);
Yani 10 saniye de bağlantı kurulamadığı takdirde oturum kapatılsın derseniz kullanacağımız örnek aşağıdaki gibi olacaktır.
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
Örneğin iş yerinizde kullandığınız bir veritabanı mevcut. Ve güvenlik açısından sadece bir bölgeden bağlantıya cevap vermekte. Bunun için proxy kullanmamız gerekecek. Proxy ile bağlantı için CURLOPT_PROXY ve CURLOPT_PROXYPORT fonksiyonlarını kullanacağız.
Bu fonksiyonların yapısı şu şekildedir:
$ipadresi = "bağlanacağınız ip adresi"; $ipport = "bağlanacağınız port"; curl_setopt( curl oturumu , CURLOPT_PROXY , $ipadresi ); curl_setopt( curl oturumu , CURLOPT_PROXYPORT , $ipport );
Örnek olması açısından buradan aldığım herhangi bir ip adresini kullanacağım.
$ch = curl_init(); curl_setopt( $ch , CURLOPT_URL , "http://www.geoiptool.com/" ); curl_setopt( $ch, CURLOPT_TIMEOUT, 5); $ipadresi = "188.168.82.145"; $ipport = "8080"; curl_setopt( $ch , CURLOPT_PROXY , $ipadresi ); curl_setopt( $ch , CURLOPT_PROXYPORT , $ipport ); $cekilenveri = curl_exec($ch); curl_close($ch); echo $cekilenveri;
Berkcan Sarı için bir yanıt yazın Yanıtı iptal et