Web sayfalarından bilgi almak, bot yapımı, veri çekme için kullanılan CURL kütüphanesinin kurulumu, kullanımı ve dosya indirme işlemi ile ilgili bilgiler yer almakta.

CURL nedir?

CURL (Client URL), çeşitli protokoller arasında veri alışverişine imkan veren bir yazılım projesidir.

CURL, Libcurl ve CURL olmak üzere ikiye ayrılır.

Libcurl C, C++, Java, C# vb. programlama dilleri için arabirim görevi görerek çeşitli protokollerden veri alışverişini sağlar.

CURL ise Libcurl kütüphanesini kullanarak işletim sistemine ait komut yorumlayıcısından (CMD, PowerShell, Terminal vb.) veri alışverişini sağlar.

PHP CURL kurulumu

CURL kurulumunu kontrol etmek için aşağıdaki komutları kullanabilirsiniz.

<?php

if (extension_loaded("curl")) {
    echo "Curl kurulu.";
} else {
    echo "Curl kurulu değil.";
}

?>

CURL kurulu değilse aşağıdaki komut ile php.ini dosyasının yolunu bularak PHP sürümüne göre extension=curlextension=php_curl ifadesinin önündeki noktalı virgülü kaldırarak etkinleştirebilirsiniz.

<?php

echo php_ini_loaded_file();

?>

CURL kütüphanesini etkinleştirdikten sonra ayarların aktif olması için sunucu yazılımını yeniden başlatarak kurulumu tamamlayabilirsiniz.

PHP ayar dosyası içinde CURL kütüphanesine ait herhangi bir şey yoksa https://curl.haxx.se/ adresinde CURL kurulumu için gerekli olan dosyaları temin edebilirsiniz.

PHP CURL kullanımı

PHP CURL yapısı içinde çeşitli işlemler için fonksiyonlar tanımlanmıştır.

PHP ile CURL işlemlerinde curl_initcurl_setoptcurl_execcurl_close fonksiyonları kullanılır.

curl_init

Fonksiyon CURL işlemini başlatmak için kullanılır. Fonksiyonun kullanımına bağlı olarak parametre ile aldığı adrese bağlanılacak adres olarak tanımlar.

curl_setopt

CURL işlemleri sırasında kullanılacak ayarları belirleyen önemli fonksiyondur. Fonksiyon dosya indirme, veri çekme, veri gönderme gibi farklı işlemlerin yapılması sağlar.

curl_exec

Ayarları yapılmış olan CURL oturumunu çalıştırır ve CURL ayarlarına göre işlem yapar.

curl_close

CURL oturumunu sonlandırır.

Aşağıdaki örnekte CURL ile site bağlantısı gösterilmiştir.

<?php

$ch = curl_init('https://www.sahmatajans.com');

curl_exec($ch);

curl_close($ch);

?>

Yukarıdaki örneğin curl_setopt fonksiyonu ile yapılmış halidir.

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.sahmatajans.com');

curl_exec($ch);

curl_close($ch);

?>

En önemli işlemin curl_setopt ile uygun ayarların yapılması olduğunu söylemiştik.

Aşağıdaki örnekte alınan değer bir değişkene atanmıştır.

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.sahmatajans.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$sonuc = curl_exec($ch);

curl_close($ch);

echo htmlspecialchars($sonuc);

?>

Örnekte curl_setopt fonksiyonu ile CURLOPT_RETURNTRANSFER ayarı etkin yapılarak curl_exec fonksiyonunun alınan değeri döndürmesi sağlanmıştır.

Dönen değer ile dosyaya yazdırma veya HTML ayrıştırıcıyla (HTML Parser) istenen değerlerin alınması sağlanabilir.

CURL ayarları yapılan işleme ve protokole göre değişiklik gösterebilir.

PHP CURL dosya indirme

PHP CURL kullanımı başlığında yapılan işleme göre uygun CURL ayarının belirlenmesi gerektiğini söylemiştik.

CURL ile dosya indirme işlemi basit olarak aşağıdaki gibi yapılabilir.

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.sahmatajans.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$sonuc = curl_exec($ch);

curl_close($ch);

file_put_contents('sah-mat-ajans.html', $sonuc);

?>

Benzer şekilde çeşitli CURL ayarları ve PHP dosya işlem fonksiyonu ile de yapılabilir.

<?php

$ch = curl_init();

$dosya = fopen('sah-mat-ajans.html', 'w');

curl_setopt($ch, CURLOPT_URL, 'https://www.sahmatajans.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $dosya);

$sonuc = curl_exec($ch);

curl_close($ch);

fclose($dosya);

?>

CURL ile dosya indirme işleminde dikkat edilmesi gereken dosya boyutuna göre işlemin uzun süreceği ve PHP ayarlarında belirtilen PHP komut çalıştırma süresi sınırını aşılacağıdır.

CURL ile dosya indirirken PHP ayarlarından komut çalıştırma süresinin değiştirilmesi faydalı olacaktır.

Hayırlı günler dilerim.