PHP CURL Nedir? Kurulumu ve Kullanımı
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=curl, extension=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_init, curl_setopt, curl_exec, curl_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.