cURL adalah alat yang menggunakan sintaks URL untuk mentransfer file dan data. Ini mendukung banyak protokol, seperti HTTP, FTP, TELNET, dll. Yang terbaiknya adalah php juga mendukung perpustakaan cURL. Artikel ini akan memperkenalkan beberapa fitur lanjutan cURL dan cara menggunakannya di PHP.
Mengapa menggunakan Curl?
Ya, kami dapat memperoleh konten web melalui metode lain. Seringkali karena ingin bermalas-malasan, saya hanya menggunakan fungsi php sederhana:
$konten = file_get_contents(" http://www.bizhicool.com ");
// atau
$garis = file(" http://www.bizhicool.com ");
// atau
readfile( http://www.bizhicool.com ); Namun, pendekatan ini kurang fleksibel dan penanganan kesalahan yang efektif. Selain itu, Anda tidak dapat menggunakannya untuk menyelesaikan beberapa tugas sulit - seperti menangani cookie, validasi, pengiriman formulir, pengunggahan file, dll.
cURL adalah perpustakaan canggih yang mendukung banyak protokol berbeda, opsi, dan dapat memberikan berbagai detail terkait permintaan URL.
Struktur Dasar Sebelum mempelajari fungsi yang lebih kompleks, mari kita lihat langkah-langkah dasar menyiapkan permintaan cURL di PHP:
Inisialisasi, atur variabel, jalankan dan dapatkan hasil, lepaskan pegangan cURL
// 1. Inisialisasi
$ch = ikal_init();
// 2. Atur opsi, termasuk URL
curl_setopt($ch, CURLOPT_URL, " http://www.bizhicool.com ");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. Jalankan dan dapatkan konten dokumen HTML
$keluaran = curl_exec($ch);
// 4. Lepaskan pegangan ikal
curl_close($ch); Langkah kedua (yaitu, curl_setopt()) adalah yang paling penting, dan semua misterinya ada di sini. Ada daftar panjang parameter cURL yang dapat diatur yang menentukan berbagai detail permintaan URL. Mungkin sulit untuk membaca dan memahami semuanya sekaligus, jadi hari ini kami hanya akan mencoba opsi yang lebih umum dan berguna.
Memeriksa kesalahan Anda dapat menambahkan pernyataan untuk memeriksa kesalahan (meskipun hal ini tidak diperlukan):
// ...
$keluaran = curl_exec($ch);
if ($keluaran === SALAH) {
echo "Kesalahan Curl: " .curl_error($ch);
}
// ...Harap diperhatikan bahwa kami menggunakan "=== FALSE" dan bukan "== FALSE" saat membandingkan. Karena kita harus membedakan antara output kosong dan nilai Boolean FALSE yang merupakan error sebenarnya.
Dapatkan informasi Ini adalah pengaturan opsional lain yang bisa mendapatkan informasi tentang permintaan ini setelah cURL dijalankan:
// ...
curl_exec($ch);
$info = curl_getinfo($ch);
echo 'Dapatkan'. $info['url'] 'Memakan waktu'. $info['total_time'] 'Detik';
// ...array yang dikembalikan mencakup informasi berikut:
"url" //Alamat jaringan sumber daya
"content_type" //Pengkodean konten
"http_code" //kode status HTTP
"header_size" //Ukuran header
"request_size" //Ukuran permintaan
"filetime" //Waktu pembuatan file
"ssl_verify_result" //Hasil verifikasi SSL
"redirect_count" //Teknologi lompat
"total_time" //Total waktu yang dibutuhkan
"namelookup_time" //waktu kueri DNS
"connect_time" //Menunggu waktu koneksi
"pretransfer_time" //Waktu persiapan sebelum transmisi
"size_upload" //Ukuran data yang diunggah
"size_download" //Ukuran data yang diunduh
"speed_download" //Kecepatan unduh
"speed_upload" //Kecepatan unggah
"download_content_length" //Panjang konten unduhan
"upload_content_length" //Panjang konten yang diunggah
"starttransfer_time" //Waktunya memulai transfer
"redirect_time" //Pengalihan membutuhkan waktu Pengalihan berbasis browser Pada contoh pertama, kami akan memberikan sepotong kode yang mendeteksi apakah server memiliki pengalihan berbasis browser. Misalnya, beberapa situs web akan mengalihkan halaman web berdasarkan apakah itu browser seluler atau bahkan dari negara mana penggunanya.
Kami menggunakan opsi CURLOPT_HTTPHEADER untuk mengatur header permintaan HTTP yang kami kirimkan (header http), termasuk informasi agen pengguna dan bahasa default. Kemudian kita akan melihat apakah situs web tertentu mengarahkan kita ke URL yang berbeda.
// URL untuk pengujian
$url = susunan(
" http://www.cnn.com ",
" http://www.mozilla.com ",
" http://www.facebook.com "
);
// Informasi browser untuk pengujian
$browser = susunan(
"standar" => larik (
"user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)",
"bahasa" => "en-us,en;q=0,5"
),
"iphone" => susunan (
"user_agent" => "Mozilla/5.0 (iPhone; U; CPU seperti Mac OS X; en) AppleWebKit/420+ (KHTML, seperti Gecko) Version/3.0 Mobile/1A537a Safari/419.3",
"bahasa" => "en"
),
"perancis" => larik (
"user_agent" => "Mozilla/4.0 (kompatibel; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)",
"bahasa" => "fr,fr-FR;q=0,5"
)
);
foreach ($url sebagai $url) {
gema "URL: $urln";
foreach ($browser sebagai $test_name => $browser) {
$ch = ikal_init();
//Setel url
curl_setopt($ch, CURLOPT_URL, $url);
//Setel header khusus browser
curl_setopt($ch, CURLOPT_HTTPHEADER, larik(
"Agen-Pengguna: {$browser['agen_pengguna']}",
"Bahasa yang Diterima: {$browser['bahasa']}"
));
// Kita tidak memerlukan konten halaman
curl_setopt($ch, CURLOPT_NOBODY, 1);
// Kembalikan saja header HTTPnya
curl_setopt($ch, CURLOPT_HEADER, 1);
// Kembalikan hasilnya alih-alih mencetaknya
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$keluaran = curl_exec($ch);
curl_close($ch);
// Apakah ada informasi header HTTP untuk pengalihan?
if (preg_match("!Lokasi: (.*)!", $output, $matches)) {
echo "$test_name: dialihkan ke $matches[1]n";
} kalau tidak {
echo "$nama_tes: tidak ada pengalihann";
}
}
gema "nn";
}Pertama, kita membuat sekumpulan URL yang perlu diuji, lalu menentukan sekumpulan informasi browser yang perlu diuji. Terakhir, loop digunakan untuk menguji berbagai situasi pencocokan URL dan browser yang mungkin terjadi.
Karena kami menentukan opsi cURL, output yang dikembalikan hanya menyertakan informasi header HTTP (disimpan di $output). Dengan menggunakan aturan reguler sederhana, kami memeriksa apakah informasi header berisi kata "Lokasi:".
Menjalankan kode ini akan memberikan hasil sebagai berikut:
Mengirim data menggunakan metode POST Saat membuat permintaan GET, data dapat diteruskan ke URL melalui "string kueri". Misalnya, saat menelusuri di Google, kunci penelusuran adalah bagian dari string kueri URL:
http://www.google.com/search?q=nettuts Dalam hal ini Anda mungkin tidak memerlukan cURL untuk melakukan simulasi. Melemparkan URL ini ke "file_get_contents()" akan mendapatkan hasil yang sama.
Namun, beberapa formulir HTML dikirimkan menggunakan metode POST. Saat formulir ini dikirimkan, data dikirim melalui badan permintaan HTTP (badan permintaan) alih-alih string kueri. Misalnya saja ketika menggunakan form forum CodeIgniter, apapun kata kunci yang Anda masukkan, Anda akan selalu POST ke halaman berikut:
http://codeigniter.com/forums/do_search/ Anda dapat menggunakan skrip PHP untuk mensimulasikan permintaan URL ini. Pertama, buat file baru yang dapat menerima dan menampilkan data POST. Kita beri nama post_output.php:
print_r($_POST); Selanjutnya, tulis skrip PHP untuk melakukan permintaan cURL:
$url = " http://localhost/post_output.php ";
$post_data = susunan (
"foo" => "bar",
"query" => "Nettut",
"tindakan" => "Kirim"
);
$ch = ikal_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Kami sedang MEMPOSTING data!
curl_setopt($ch, CURLOPT_POST, 1);
//Tambahkan variabel posting
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$keluaran = curl_exec($ch);
curl_close($ch);
echo $output;Setelah mengeksekusi kode, Anda akan mendapatkan hasil sebagai berikut:
Skrip ini mengirimkan permintaan POST ke post_output.php, variabel $_POST halaman dan mengembalikannya. Kami menangkap output ini menggunakan cURL.
Upload File Upload file sangat mirip dengan POST sebelumnya. Karena semua formulir upload file dikirimkan melalui metode POST.
Pertama, buat halaman baru untuk menerima file, beri nama upload_output.php:
print_r($_FILES);Berikut ini adalah skrip yang sebenarnya melakukan tugas pengunggahan file:
$url = " http://localhost/upload_output.php ";
$post_data = susunan (
"foo" => "bar",
//Alamat file lokal yang akan diunggah
"unggah" => "@C:/wamp/www/test.zip"
);
$ch = ikal_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$keluaran = curl_exec($ch);
curl_close($ch);
echo $output; Jika Anda perlu mengunggah file, cukup berikan jalur file seperti variabel post, tetapi ingat untuk menambahkan simbol @ di depannya. Mengeksekusi skrip ini akan menghasilkan output berikut:
pemrosesan batch cURL (multi cURL)
cURL juga memiliki fitur lanjutan - pegangan batch. Fitur ini memungkinkan Anda membuka beberapa koneksi URL secara bersamaan atau asinkron.
Berikut ini contoh kode dari php.net:
//Buat dua sumber daya cURL
$ch1 = ikal_init();
$ch2 = ikal_init();
//Tentukan URL dan parameter yang sesuai
curl_setopt($ch1, CURLOPT_URL, " http://lxr.php.net/ ");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, " http://www.php.net/ ");
curl_setopt($ch2, CURLOPT_HEADER, 0);
//Buat pegangan kumpulan cURL
$mh = curl_multi_init();
//Tambahkan dua pegangan sumber daya pertama
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
// Mendefinisikan variabel keadaan terlebih dahulu
$aktif = nol;
//Jalankan pemrosesan batch
Mengerjakan {
$mrc = curl_multi_exec($mh, $aktif);
} sementara ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($aktif && $mrc == CURLM_OK) {
jika (curl_multi_select($mh) != -1) {
Mengerjakan {
$mrc = curl_multi_exec($mh, $aktif);
} sementara ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
//Tutup setiap pegangan
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh); Yang perlu Anda lakukan di sini adalah membuka beberapa pegangan cURL dan menetapkannya ke pegangan batch. Kemudian Anda tinggal menunggu beberapa saat hingga selesai.
Ada dua loop utama dalam contoh ini. Perulangan do- while pertama memanggil curl_multi_exec() berulang kali. Fungsi ini tidak memblokir tetapi akan dijalankan sesedikit mungkin. Ini mengembalikan nilai status. Selama nilai ini sama dengan konstanta CURLM_CALL_MULTI_PERFORM, itu berarti masih ada beberapa pekerjaan mendesak yang harus dilakukan (misalnya, mengirimkan informasi header http yang sesuai dengan URL). Artinya, kita perlu terus memanggil fungsi ini hingga nilai kembaliannya berubah.
Perulangan while berikut hanya akan dilanjutkan jika variabel $active benar. Variabel ini sebelumnya diteruskan ke curl_multi_exec() sebagai parameter kedua dan menunjukkan apakah masih ada koneksi aktif di pegangan batch. Selanjutnya, kita memanggil curl_multi_select(), yang "diblokir" hingga koneksi aktif (seperti menerima respons server) terjadi. Setelah fungsi ini berhasil dijalankan, kita akan memasukkan loop do-sementara lainnya dan melanjutkan ke URL berikutnya.
Mari kita lihat cara memanfaatkan fitur ini secara praktis:
Pemeriksa Koneksi WordPress Bayangkan Anda memiliki blog dengan banyak artikel yang berisi banyak link ke situs web eksternal. Setelah beberapa saat, sejumlah tautan ini menjadi tidak valid karena satu dan lain hal. Entah itu telah diselaraskan, atau seluruh situs telah diretas...
Mari kita buat skrip di bawah ini untuk menganalisis semua tautan ini, mencari tahu situs web/halaman web yang tidak dapat dibuka atau memiliki 404, dan membuat laporan.
Harap dicatat bahwa berikut ini bukan plugin WordPress yang berfungsi sebenarnya, ini hanya skrip dengan fungsi independen, hanya untuk demonstrasi, terima kasih.
Oke, mari kita mulai. Pertama, baca semua tautan ini dari database:
//KONFIGURASI
$db_host = 'host lokal';
$db_pengguna = 'akar';
$db_pass = '';
$db_name = 'wordpress';
$domain_yang dikecualikan = susunan(
'localhost', 'www.domainsaya.com');
$max_koneksi = 10;
//Inisialisasi beberapa variabel
$url_list = susunan();
$working_urls = susunan();
$dead_urls = susunan();
$not_found_urls = susunan();
$aktif = nol;
// Hubungkan ke MySQL
jika (!mysql_connect($db_host, $db_user, $db_pass)) {
die('Tidak dapat terhubung: ' .mysql_error());
}
jika (!mysql_select_db($db_nama)) {
die('Tidak dapat memilih db: ' .mysql_error());
}
// Temukan semua artikel yang memiliki link
$q = "PILIH post_content DARI wp_posts
DIMANA post_content SEPERTI '%href=%'
DAN post_status = 'terbitkan'
DAN post_type = 'postingan'";
$r = mysql_query($q) atau mati(mysql_error());
sementara ($d = mysql_fetch_assoc($r)) {
// Gunakan tautan pencocokan reguler
if (preg_match_all("!href="(.*?)"!", $d['post_content'], $matches)) {
foreach ($cocok[1] sebagai $url) {
// kecualikan beberapa domain
$tmp = parse_url($url);
if (dalam_array($tmp['host'], $excluded_domains)) {
melanjutkan;
}
// simpan urlnya
$url_daftar []= $url;
}
}
}
// Hapus tautan duplikat
$url_list = array_values(array_unique($url_list));
jika (!$url_list) {
die('Tidak ada URL yang perlu diperiksa');
}Pertama-tama kita mengonfigurasi database, serangkaian nama domain yang akan dikecualikan ($excluded_domains), dan jumlah maksimum koneksi bersamaan ($max_connections). Kemudian, sambungkan ke database, dapatkan artikel dan tautan yang disertakan, dan kumpulkan ke dalam array ($url_list).
Kode di bawah ini agak rumit, jadi saya akan menjelaskannya secara detail langkah demi langkah:
// 1. Prosesor batch
$mh = curl_multi_init();
// 2. Tambahkan URL yang perlu diproses secara batch
untuk ($i = 0; $i < $max_connections; $i++) {
add_url_to_multi_handle($mh, $url_list);
}
// 3. Pemrosesan awal
Mengerjakan {
$mrc = curl_multi_exec($mh, $aktif);
} sementara ($mrc == CURLM_CALL_MULTI_PERFORM);
// 4. Lingkaran utama
while ($aktif && $mrc == CURLM_OK) {
// 5. Ada koneksi aktif
jika (curl_multi_select($mh) != -1) {
// 6. Kerja
Mengerjakan {
$mrc = curl_multi_exec($mh, $aktif);
} sementara ($mrc == CURLM_CALL_MULTI_PERFORM);
// 7. Apakah Anda punya informasi?
if ($mhinfo = curl_multi_info_read($mh)) {
//Berarti koneksi berakhir normal
// 8. Dapatkan informasi dari pegangan curl
$chinfo = curl_getinfo($mhinfo['pegangan']);
// 9. Tautan mati?
if (!$chinfo['http_code']) {
$dead_urls []= $chinfo['url'];
// 10.404?
} else if ($chinfo['http_code'] == 404) {
$not_found_urls []= $chinfo['url'];
// 11. Masih tersedia
} kalau tidak {
$working_urls []= $chinfo['url'];
}
// 12. Lepas pegangan
curl_multi_remove_handle($mh, $mhinfo['pegangan']);
curl_close($mhinfo['pegangan']);
// 13. Tambahkan URL baru dan lakukan pekerjaannya
if (tambahkan_url_ke_multi_handle($mh, $url_list)) {
Mengerjakan {
$mrc = curl_multi_exec($mh, $aktif);
} sementara ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
}
}
// 14. Selesai
curl_multi_close($mh);
echo "==URL Mati==n";
echo meledak("n",$dead_urls) "nn";
echo "==404 URL==n";
echo meledak("n",$not_found_urls) "nn";
echo "==URL yang Berfungsi==n";
echo meledak("n",$working_urls);
// 15. Tambahkan url ke prosesor batch
fungsi add_url_to_multi_handle($mh, $url_list) {
statis $indeks = 0;
// Jika urlnya dibiarkan, tidak ada gunanya
if ($url_list[$index]) {
//Buat pegangan ikal baru
$ch = ikal_init();
//Konfigurasi url
curl_setopt($ch, CURLOPT_URL, $url_list[$index]);
// Tidak ingin menampilkan konten yang dikembalikan
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Kita akan pergi kemanapun pengalihan membawa kita
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// Tidak diperlukan isi konten, yang dapat menghemat bandwidth dan waktu
curl_setopt($ch, CURLOPT_NOBODY, 1);
//Tambahkan ke prosesor batch
curl_multi_add_handle($mh, $ch);
// Tekan penghitung dan Anda dapat menambahkan url berikutnya saat Anda memanggil fungsi ini lagi.
$indeks++;
kembali benar;
} kalau tidak {
// Tidak ada URL baru yang perlu diproses
kembali salah;
}
}Kode di atas dijelaskan di bawah ini. Nomor seri dalam daftar sesuai dengan nomor urut dalam komentar kode.
Buat prosesor batch baru. Membuat multi pegangan.
Nanti kita akan membuat fungsi add_url_to_multi_handle() yang menambahkan URL ke batch handler. Setiap kali fungsi ini dipanggil, URL baru ditambahkan ke pemroses batch. Awalnya, kami menambahkan 10 URL ke prosesor batch (jumlah ini ditentukan oleh $max_connections).
Penting untuk menjalankan curl_multi_exec() untuk melakukan pekerjaan inisialisasi, selama ia mengembalikan CURLM_CALL_MULTI_PERFORM masih ada yang harus dilakukan. Hal ini dilakukan terutama untuk membuat koneksi, tidak menunggu respons URL lengkap.
Perulangan utama berlanjut selama ada koneksi aktif dalam batch.
curl_multi_select() menunggu hingga kueri URL menghasilkan koneksi aktif.
Pekerjaan cURL kembali hadir, terutama untuk memperoleh data respons.
Periksa berbagai informasi. Ketika permintaan URL selesai, sebuah array dikembalikan.
Ada pegangan cURL di array yang dikembalikan. Kami menggunakannya untuk mendapatkan informasi terkait untuk satu permintaan cURL.
Jika tautan ini mati atau permintaan habis, kode status http tidak akan dikembalikan.
Jika halaman ini tidak dapat ditemukan, kode status 404 akan dikembalikan.
Dalam kasus lain, kami berasumsi bahwa tautan ini tersedia (tentu saja, Anda juga dapat memeriksa 500 kesalahan dan sejenisnya...).
Hapus pegangan cURL ini dari batch karena tidak lagi digunakan, tutup!
Bagus, sekarang Anda dapat menambahkan URL lain. Sekali lagi, pekerjaan inisialisasi dimulai lagi...
Ya, semua yang perlu dilakukan sudah selesai. Tutup prosesor batch dan buat laporan.
Mari kembali ke fungsi yang menambahkan URL baru ke pemroses batch. Setiap kali fungsi ini dipanggil, variabel statis $index bertambah sehingga kita dapat mengetahui berapa banyak URL yang tersisa untuk diproses.
Saya menjalankan skrip ini di blog saya (perlu pengujian, beberapa tautan salah sengaja ditambahkan), dan hasilnya adalah sebagai berikut:
Total sekitar 40 URL diperiksa dan hanya membutuhkan waktu kurang dari dua detik. Saat Anda perlu memeriksa URL dalam jumlah yang lebih besar, efek penghematan rasa khawatir dapat dibayangkan! Jika Anda membuka 10 koneksi secara bersamaan, itu akan menjadi 10 kali lebih cepat! Selain itu, Anda juga dapat memanfaatkan fitur non-pemblokiran pemrosesan batch CURL untuk menangani permintaan URL dalam jumlah besar tanpa memblokir skrip web Anda.
Beberapa opsi cURL berguna lainnya
Otentikasi HTTP Jika permintaan URL memerlukan otentikasi berbasis HTTP, Anda dapat menggunakan kode berikut:
$url = " http://www.somesite.com/members/ ";
$ch = ikal_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Kirim nama pengguna dan kata sandi
curl_setopt($ch, CURLOPT_USERPWD, "nama pengguna saya: kata sandi saya");
// Anda dapat mengizinkannya untuk mengalihkan
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// Opsi berikut memungkinkan cURL untuk
// Bisa juga mengirimkan nama pengguna dan kata sandi
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);
$keluaran = curl_exec($ch);
curl_close($ch);Unggahan FTP
PHP hadir dengan perpustakaan FTP-nya sendiri, tetapi Anda juga dapat menggunakan cURL:
//Buka penunjuk file
$file = fopen("/jalur/ke/file", "r");
// Url berisi sebagian besar informasi yang diperlukan
$url = " ftp://nama pengguna:kata [email protected]:21/path/to/new/file ";
$ch = ikal_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Unggah opsi terkait
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, ukuran file("/path/ke/file"));
// Apakah akan mengaktifkan mode ASCII (berguna saat mengunggah file teks)
curl_setopt($ch, CURLOPT_FTPASCII, 1);
$keluaran = curl_exec($ch);
curl_close($ch); Untuk menghindari tembok, Anda dapat menggunakan proxy untuk memulai permintaan cURL:
$ch = ikal_init();
curl_setopt($ch, CURLOPT_URL,'http://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Tentukan alamat proksi
curl_setopt($ch, CURLOPT_PROXY, '11.11.11.11:8080');
// Berikan nama pengguna dan kata sandi jika diperlukan
curl_setopt($ch, CURLOPT_PROXYUSERPWD,'pengguna:pass');
$keluaran = curl_exec($ch);
curl_close ($ch); Fungsi panggilan balik memungkinkan cURL memanggil fungsi panggilan balik tertentu selama permintaan URL. Misalnya, mulailah memanfaatkan data segera setelah konten atau respons diunduh, daripada menunggu hingga selesai diunduh.
$ch = ikal_init();
curl_setopt($ch, CURLOPT_URL,'http://net.tutsplus.com');
curl_setopt($ch, CURLOPT_WRITEFUNCTION,"fungsi_kemajuan");
curl_exec($ch);
curl_close ($ch);
fungsi kemajuan_fungsi($ch,$str) {
gema $str;
kembali strlen($str);
}Fungsi panggilan balik ini harus mengembalikan panjang string, jika tidak, fungsi ini tidak akan berfungsi dengan baik.
Selama proses penerimaan respon URL, fungsi ini akan dipanggil selama paket data diterima.
Ringkasan Hari ini kita belajar tentang fungsi canggih dan skalabilitas fleksibel dari perpustakaan cURL. Semoga Anda menyukainya. Lain kali Anda ingin membuat permintaan URL, pertimbangkan cURL!
Terima kasih!
Teks asli: Mulai cepat dengan cURL berdasarkan PHP
Teks asli bahasa Inggris: http://net.tutsplus.com/tutorials/php/techniques-and-resources-for-mastering-curl/
Penulis asli: Burak Guzel
Sumbernya harus disimpan untuk dicetak ulang.