Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Menggunakan curl untuk permintaan jauh
3Jika anda seorang pengguna Linux maka anda mungkin menggunakan curl. Ia adalah alat yang berkuasa yang digunakan untuk segala -galanya daripada menghantar e -mel untuk memuat turun subtitle Little Pony yang terkini. Dalam artikel ini saya akan menerangkan cara menggunakan lanjutan curl dalam PHP. Pelanjutan ini menawarkan kami fungsi sebagai utiliti konsol di dunia PHP yang selesa. Saya akan membincangkan penghantaran permintaan GET dan pos, mengendalikan kuki log masuk, dan fungsi FTP. Sebelum kita mula, pastikan anda mempunyai lanjutan (dan Perpustakaan Libcurl) dipasang. Ia tidak dipasang secara lalai. Dalam kebanyakan kes, ia boleh dipasang menggunakan pengurus pakej sistem anda, tetapi sekatan bahawa anda boleh mendapatkan arahan dalam manual PHP.
<span><span><?php </span></span><span><span>// init the resource </span></span><span><span>$ch = curl_init(); </span></span><span> </span><span><span>// set a single option... </span></span><span><span>curl_setopt($ch, OPTION, $value); </span></span><span><span>// ... or an array of options </span></span><span><span>curl_setopt_array($ch, array( </span></span><span><span>OPTION1 => $value1, </span></span><span><span>OPTION2 => $value2 </span></span><span><span>)); </span></span><span> </span><span><span>// execute </span></span><span><span>$output = curl_exec($ch); </span></span><span> </span><span><span>// free </span></span><span><span>curl_close($ch);</span></span>Satu -satunya perkara yang berubah untuk permintaan ialah pilihan yang ditetapkan, yang tentu saja bergantung pada apa yang anda lakukan dengan Curl.
<span><span><?php </span></span><span><span>curl_setopt_array( </span></span><span><span>$ch, array( </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/', </span></span><span><span>CURLOPT_RETURNTRANSFER => true </span></span><span><span>)); </span></span><span> </span><span><span>$output = curl_exec($ch); </span></span><span><span>echo $output;</span></span>Semak output dalam penyemak imbas anda dan anda harus melihat laman web BBC dipaparkan. Kami bernasib baik kerana laman web ini memaparkan dengan betul kerana menghubungkan mutlaknya ke stylesheets dan imej. Pilihan yang kami gunakan adalah:
<span><span><?php </span></span><span><span>// init the resource </span></span><span><span>$ch = curl_init(); </span></span><span> </span><span><span>// set a single option... </span></span><span><span>curl_setopt($ch, OPTION, $value); </span></span><span><span>// ... or an array of options </span></span><span><span>curl_setopt_array($ch, array( </span></span><span><span>OPTION1 => $value1, </span></span><span><span>OPTION2 => $value2 </span></span><span><span>)); </span></span><span> </span><span><span>// execute </span></span><span><span>$output = curl_exec($ch); </span></span><span> </span><span><span>// free </span></span><span><span>curl_close($ch);</span></span>Pilihan baru adalah:
<span><span><?php </span></span><span><span>curl_setopt_array( </span></span><span><span>$ch, array( </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/', </span></span><span><span>CURLOPT_RETURNTRANSFER => true </span></span><span><span>)); </span></span><span> </span><span><span>$output = curl_exec($ch); </span></span><span><span>echo $output;</span></span>Pilihan baru adalah:
<span><span><?php </span></span><span><span>$postData = array( </span></span><span><span>'login' => 'acogneau', </span></span><span><span>'pwd' => 'secretpassword', </span></span><span><span>'redirect_to' => 'http://example.com', </span></span><span><span>'testcookie' => '1' </span></span><span><span>); </span></span><span> </span><span><span>curl_setopt_array($ch, array( </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php', </span></span><span><span>CURLOPT_RETURNTRANSFER => true, </span></span><span><span>CURLOPT_POST => true, </span></span><span><span>CURLOPT_POSTFIELDS => $postData, </span></span><span><span>CURLOPT_FOLLOWLOCATION => true </span></span><span><span>)); </span></span><span> </span><span><span>$output = curl_exec($ch); </span></span><span><span>echo $output;</span></span>Perhatikan bahawa tidak banyak pelayan FTP awam yang membolehkan muat naik dan muat turun tanpa nama untuk alasan keselamatan, jadi URL dan kelayakan di atas hanya pemegang tempat. Ini hampir sama dengan menghantar permintaan HTTP, tetapi hanya beberapa perbezaan kecil:
<span><span><?php </span></span><span><span>curl_setopt_array($ch, array( </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php', </span></span><span><span>CURLOPT_RETURNTRANSFER => true, </span></span><span><span>CURLOPT_POST => true, </span></span><span><span>CURLOPT_POSTFIELDS => $postData, </span></span><span><span>CURLOPT_FOLLOWLOCATION => true, </span></span><span><span>CURLOPT_COOKIESESSION => true, </span></span><span><span>CUROPT_COOKIEJAR => 'cookie.txt' </span></span><span><span>));</span></span>Pilihan penting di sini adalah:
<span><span><?php </span></span><span><span>// init the resource </span></span><span><span>$ch = curl_init(); </span></span><span> </span><span><span>// set a single option... </span></span><span><span>curl_setopt($ch, OPTION, $value); </span></span><span><span>// ... or an array of options </span></span><span><span>curl_setopt_array($ch, array( </span></span><span><span>OPTION1 => $value1, </span></span><span><span>OPTION2 => $value2 </span></span><span><span>)); </span></span><span> </span><span><span>// execute </span></span><span><span>$output = curl_exec($ch); </span></span><span> </span><span><span>// free </span></span><span><span>curl_close($ch);</span></span>Kod di atas mengambil kira -kira 1,100 ms untuk melaksanakan pada komputer riba saya. Melaksanakan permintaan secara berurutan tanpa antara muka multi yang diperlukan sekitar 2,000 ms. Bayangkan apa keuntungan anda jika anda menghantar beratus -ratus permintaan! Pelbagai projek wujud yang abstrak dan membungkus antara muka pelbagai. Membincangkannya adalah di luar skop artikel, tetapi jika anda merancang untuk mengeluarkan pelbagai permintaan secara tidak segerak maka saya cadangkan anda melihat mereka:
<span><span><?php </span></span><span><span>// init the resource </span></span><span><span>$ch = curl_init(); </span></span><span> </span><span><span>// set a single option... </span></span><span><span>curl_setopt($ch, OPTION, $value); </span></span><span><span>// ... or an array of options </span></span><span><span>curl_setopt_array($ch, array( </span></span><span><span>OPTION1 => $value1, </span></span><span><span>OPTION2 => $value2 </span></span><span><span>)); </span></span><span> </span><span><span>// execute </span></span><span><span>$output = curl_exec($ch); </span></span><span> </span><span><span>// free </span></span><span><span>curl_close($ch);</span></span>Jika ralat muncul, anda boleh menyemaknya dengan curl_error ():
<span><span><?php </span></span><span><span>curl_setopt_array( </span></span><span><span>$ch, array( </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/', </span></span><span><span>CURLOPT_RETURNTRANSFER => true </span></span><span><span>)); </span></span><span> </span><span><span>$output = curl_exec($ch); </span></span><span><span>echo $output;</span></span>
curl, atau URL klien, adalah perpustakaan yang membolehkan anda membuat permintaan HTTP dalam PHP. Ia digunakan untuk berkomunikasi dengan pelbagai jenis pelayan dan memuat turun atau memuat naik data. Curl menyokong pelbagai protokol seperti HTTP, HTTPS, FTP, dan banyak lagi. Ini alat yang berkuasa yang boleh digunakan untuk berinteraksi dengan API, mengikis laman web, atau memuat turun fail.
Bagaimana saya membuat permintaan curl mudah di php?
$ ch = curl_init ();
curl_setopt ($ ch, curlopt_url, "http://example.com"); );
$ output = curl_exec ($ ch);
curl_close ($ ch);
Bagaimana saya boleh mengendalikan kesilapan dalam curl? ) fungsi. Fungsi ini mengembalikan nombor ralat dan mesej ralat terakhir masing -masing. Berikut adalah contoh:
curl_setopt ($ ch, curlopt_post, 1);
curl_setopt ($ ch, curlopt_postfields, "postvar1 = value1 & postvar2 = value2"); tajuk untuk permintaan curl?
Anda boleh menetapkan tajuk tersuai dengan menggunakan Pilihan curlopt_httpheader. Pilihan ini mengambil pelbagai tajuk sebagai nilainya. Berikut adalah contoh:
'kebenaran: pembawa'. $ Token
); CH, curlopt_httpheader, headers $);
Bagaimana saya mengikuti pengalihan dengan curl?
untuk mengikuti Pengalihan, anda perlu menetapkan pilihan curlopt_follocation untuk benar. Berikut adalah cara anda boleh melakukannya:
curl_setopt ($ ch, curlopt_header, true);
Untuk menggunakan curl dengan proksi, anda boleh menetapkan pilihan curlopt_proxy ke alamat proksi. Begini cara anda boleh melakukannya:
Atas ialah kandungan terperinci PHP Master | Menggunakan curl untuk permintaan jauh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!