Apa perbedaan kedua kode ini saat mengakses REST API?
$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
dan
$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
Keduanya menghasilkan hasil yang sama, dilihat dari
print_r(json_decode($result))
php
curl
file-get-contents
Salvador Dali
sumber
sumber
cURL
mampu lebih darifile_get_contents
. Itu sudah cukup.Jawaban:
file_get_contents()
adalah obeng sederhana. Sangat bagus untuk permintaan GET sederhana di mana header, metode permintaan HTTP, batas waktu, cookiejar, pengalihan, dan hal penting lainnya tidak menjadi masalah.fopen()
dengan konteks aliran atau cURL dengan setopt adalah latihan daya dengan setiap bit dan opsi yang dapat Anda pikirkan.sumber
file_get_contents
memungkinkan juga untuk mengatur konteks, yang berarti Anda dapat mengatur bidang header sesuka Anda.Selain itu, karena beberapa peretasan situs web baru-baru ini, kami harus lebih mengamankan situs kami. Saat melakukannya, kami menemukan bahwa file_get_contents gagal berfungsi, di mana curl masih akan berfungsi.
Tidak 100%, tapi saya yakin pengaturan php.ini ini mungkin telah memblokir permintaan file_get_contents .
Bagaimanapun, kode kami sekarang berfungsi dengan curl .
sumber
file_get_contents
membutuhkanallow_url_fopen
untuk menjadi truthy.file_get_contents()
karena banyak eksploitasi yang diketahui menggunakan fungsi tersebut. cURL adalah fungsi yang harus digunakan orang dalam kode sekarang.allow_url_fopen
karena mereka salah pahamallow_url_include
.allow_url_fopen
danfile_get_contents
baik untuk digunakan.file_get_contents()
Ini adalah topik lama tetapi pada pengujian terakhir saya pada salah satu API saya, cURL lebih cepat dan lebih stabil. Terkadang file_get_contents pada permintaan yang lebih besar membutuhkan lebih dari 5 detik ketika cURL hanya membutuhkan dari 1,4 hingga 1,9 detik yang lebih cepat dua kali lipat.
Saya perlu menambahkan satu catatan tentang ini bahwa saya baru saja mengirim GET dan menerima konten JSON. Jika Anda mengatur cURL dengan benar, Anda akan mendapatkan respon yang bagus. Cukup "beri tahu" kepada cURL apa yang perlu Anda kirim dan apa yang perlu Anda terima dan hanya itu.
Atas contoh Anda, saya ingin melakukan penyiapan ini:
Permintaan ini akan mengembalikan data dalam maks 0,01 detik
sumber
file_get_contents
saya baru saja melakukan beberapa panggilan API untuk mengonfirmasi. 0,8 detik selamafile_get_contents
& 0,49 detik untukcurl
(3 panggilan API)