


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.
Takeaways Key
- curl, alat yang berkuasa yang digunakan untuk pelbagai tugas dari menghantar e -mel untuk memuat turun sari kata, boleh digunakan dalam PHP melalui lanjutan yang menawarkan fungsi yang sama seperti utiliti konsol.
- Curl boleh digunakan untuk mendapatkan laman web, log masuk ke laman web, bekerjasama dengan FTP dan menghantar beberapa permintaan. Sebagai contoh, anda boleh mensimulasikan pembalakan ke laman web berkuasa WordPress dengan menghantar permintaan pos dengan butiran khusus.
- Permintaan Curl Penyelesaian masalah dipermudahkan dengan penggunaan dua fungsi: curl_getinfo () dan curl_error (). Fungsi ini memberikan maklumat terperinci mengenai saluran dan sebarang kesilapan yang mungkin berlaku semasa permintaan.
- Curl adalah alat yang cekap dan berkuasa untuk membuat panggilan jauh, menjadikannya sesuai untuk tugas -tugas seperti mengakses API luaran atau merangkak. Ia menawarkan antara muka mesra pengguna dan pelaksanaan permintaan yang agak mudah.
bagaimana ia berfungsi?
Semua permintaan curl mengikuti corak asas yang sama:- Pertama kita memulakan sumber curl (sering disingkat sebagai ch untuk "curl handle") dengan memanggil fungsi curl_init ().
- Seterusnya kami menetapkan pelbagai pilihan, seperti URL, kaedah permintaan, data muatan, dan lain -lain. Pilihan boleh ditetapkan secara individu dengan curl_setopt (), atau kami boleh lulus pelbagai pilihan untuk curl_setopt_array ().
- maka kami melaksanakan permintaan itu dengan menghubungi curl_exec ().
- Akhirnya, kami membebaskan sumber untuk membersihkan memori.
<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>
Dapatkan laman web
Contoh yang paling asas menggunakan curl yang boleh saya fikirkan hanyalah mengambil kandungan laman web. Oleh itu, mari kita ambil halaman utama BBC sebagai contoh.<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>
- curlopt_url - Menentukan URL untuk permintaan
- curlopt_returnTransfer - Apabila ditetapkan palsu, curl_exec () mengembalikan benar atau palsu bergantung kepada kejayaan permintaan itu. Apabila ditetapkan kepada benar, curl_exec () mengembalikan kandungan respons.
log masuk ke laman web
Curl melaksanakan permintaan GET untuk mengambil halaman BBC, tetapi Curl juga boleh menggunakan kaedah lain, seperti POST dan PUT. Untuk contoh ini, mari mensimulasikan log masuk ke laman web berkuasa WordPress. Pembalakan masuk dilakukan dengan menghantar permintaan pos ke http://example.com/wp-login.php dengan butiran berikut:- Login - Nama Pengguna
- pwd - kata laluan
- redirect_to - URL yang kita mahu pergi ke selepas pembalakan
- testcookie - harus ditetapkan kepada 1 (ini hanya untuk WordPress)
<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>
- curlopt_post - tetapkan ini benar jika anda ingin menghantar permintaan pos
- curlopt_postfields - data yang akan dihantar dalam badan permintaan
- curlopt_followlocation - Jika ditetapkan benar, curl akan mengikuti pengalihan
<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>
- curlopt_cookiesession - Jika ditetapkan kepada benar, Curl akan memulakan sesi kuki baru dan mengabaikan mana -mana kuki sebelumnya
- curlopt_cookiejar - Ini adalah nama fail di mana curl harus menyimpan maklumat cookie. Pastikan anda mempunyai kebenaran yang betul untuk menulis ke fail!
Bekerja dengan FTP
Menggunakan curl untuk memuat turun dan memuat naik fail melalui FTP juga mudah. Mari lihat memuat turun fail:<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>
- curlopt_url - URL fail, perhatikan penggunaan "ftp: //" dan bukannya "http: //"
- curlot_userpwd - kelayakan log masuk untuk pelayan FTP
<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>
- curlopt_upload - Boolean jelas
- curlopt_infile - aliran yang boleh dibaca untuk fail yang kami mahu muat naik
- curlopt_infilesize - saiz fail yang kami mahu muat naik di bait
Menghantar pelbagai permintaan
Bayangkan kita perlu melakukan lima permintaan untuk mengambil semua data yang diperlukan. Perlu diingat bahawa beberapa perkara akan berada di luar kawalan kami, seperti latensi rangkaian dan kelajuan tindak balas pelayan sasaran. Harus jelas bahawa mana -mana kelewatan apabila mengeluarkan lima panggilan berturut -turut boleh ditambah! Salah satu cara untuk mengurangkan masalah ini ialah mengeluarkan permintaan secara tidak segerak. Teknik asynchronous lebih biasa dalam komuniti JavaScript dan Node.js, tetapi secara ringkas dan bukannya menunggu tugas yang memakan masa untuk diselesaikan, kami memberikan tugas kepada benang atau proses yang berbeza dan terus melakukan perkara-perkara lain dalam masa yang sama. Apabila tugas selesai, kami kembali untuk hasilnya. Yang penting ialah kita tidak membazirkan masa menunggu keputusan; Kami menghabiskannya melaksanakan kod lain secara bebas. Pendekatan untuk melakukan pelbagai permintaan curl asynchronous sedikit berbeza dari sebelumnya. Kami memulakan perkara yang sama - kami memulakan setiap saluran dan kemudian menetapkan pilihan - tetapi kemudian kami memulakan multihandler menggunakan curl_multi_init () dan menambah saluran kami dengan curl_multi_add_handle (). Kami melaksanakan pengendali dengan melingkari mereka dan memeriksa status mereka. Pada akhirnya kita mendapat kandungan respons dengan curl_multi_getContent ().<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>
- github.com/petewarden/parallelcurl
- semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading
Penyelesaian masalah
Jika anda menggunakan curl maka anda mungkin melakukan permintaan anda ke pelayan pihak ketiga. Anda tidak dapat mengawalnya dan banyak yang boleh salah: Pelayan boleh pergi di luar talian, struktur direktori boleh berubah, dan lain -lain. Kami memerlukan cara yang cekap untuk mengetahui apa yang salah apabila sesuatu tidak berfungsi, dan bernasib baik Curl menawarkan dua fungsi untuk ini: curl_getInfo () dan curl_error () . curl_getInfo () mengembalikan array dengan semua maklumat mengenai saluran, jadi jika anda ingin menyemak sama ada semuanya baik -baik saja anda boleh gunakan:<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>
<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>
Kesimpulan
Curl menawarkan cara yang kuat dan cekap untuk membuat panggilan terpencil, jadi jika anda memerlukan crawler atau sesuatu untuk mengakses API luaran, Curl adalah alat yang hebat untuk pekerjaan itu. Ia memberikan kita antara muka yang bagus dan cara yang agak mudah untuk melaksanakan permintaan. Untuk maklumat lanjut, lihat manual PHP dan laman web Curl. Jumpa lagi lain! Komen mengenai artikel ini ditutup. Ada soalan mengenai PHP? Mengapa tidak bertanya di forum kami? imej melalui FotoliaSoalan Lazim (Soalan Lazim) Mengenai Menggunakan Curl Untuk Permintaan Jauh
Apa itu curl dan mengapa ia digunakan dalam php?
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 memasang dan mengaktifkan curl dalam php? pelayan web. Walau bagaimanapun, jika ia tidak didayakan, anda boleh melakukannya dengan mengubah suai fail php.ini anda. Cari garis yang mengatakan "; lanjutan = curl" dan keluarkan titik koma. Jika garis tidak wujud, anda boleh menambahkannya pada akhir fail. Setelah membuat perubahan, simpan fail dan mulakan semula pelayan web anda.
Bagaimana saya membuat permintaan curl mudah di php?
fungsi curl_init (). Kemudian, tetapkan pilihan anda menggunakan fungsi curl_setopt (). Akhirnya, laksanakan permintaan dengan curl_exec () dan tutup sesi dengan curl_close (). Berikut adalah contoh asas:
$ 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:
echo 'error:'. curl_error ($ ch); }
Bagaimana saya menghantar permintaan pos menggunakan curl?
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:
headers = array (
'content-type: application/json', '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:
bagaimana saya boleh mendapatkan tajuk tindak balas dari permintaan curl? Header Response, anda boleh menetapkan pilihan curlopt_header untuk benar. Ini termasuk tajuk dalam output. Berikut adalah contoh:
curl_setopt ($ ch, curlopt_header, true);
curl_setopt ($ ch, curlopt_postfields, array ('file' => '@/path/to/file.txt'); Proksi?
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...
