PHP, sebagai bahasa peringkat rendah, digunakan secara meluas dalam pembangunan rangkaian. Dalam pembangunan web, permintaan http adalah bahagian penting. Artikel ini akan memperkenalkan fungsi permintaan http yang biasa digunakan dalam PHP, cara menggunakannya dan teknik yang sepadan.
curl ialah fungsi permintaan http yang sangat popular, yang menyokong pelbagai protokol, kaedah pengesahan, proksi dan fungsi lain. Ia adalah sebahagian daripada pakej pemasangan asas PHP, jadi tiada pemasangan diperlukan untuk menggunakannya.
Kod sampel:
$url = 'http://www.example.com'; $ch = curl_init(); // 初始化curl curl_setopt($ch, CURLOPT_URL, $url); // 设置请求的URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl请求的结果保存到变量中,而不直接输出到屏幕 $res = curl_exec($ch); // 执行请求 curl_close($ch); // 关闭curl echo $res;
Dalam contoh di atas, kita mula-mula memulakan pemegang keriting menggunakan fungsi curl_init()
, dan kemudian memanggil curl_setopt()
Fungsi menetapkan dua pilihan:
CURLOPT_URL
: Tetapkan URL yang diminta. CURLOPT_RETURNTRANSFER
: Tetapkan curl untuk menyimpan hasil terus ke dalam pembolehubah tanpa mencetaknya. Akhir sekali, kami memanggil curl_exec()
untuk melaksanakan permintaan dan menggunakan curl_close()
untuk menutup pemegang keriting. Hasil yang dikembalikan oleh permintaan akan disimpan dalam pembolehubah $res, dan kami boleh mengeluarkannya secara langsung.
Kadangkala, kita perlu menghantar permintaan HTTP POST. Dalam curl, kita boleh menggunakan pilihan CURLOPT_POST
dan CURLOPT_POSTFIELDS
untuk menghantar permintaan POST.
Kod sampel:
$url = 'http://www.example.com'; $post_data = array('key1' => 'value1', 'key2' => 'value2'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); //设置为POST请求 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //设置POST参数 $res = curl_exec($ch); curl_close($ch); echo $res;
Dalam kod di atas, kami mula-mula menetapkan URL dan parameter POST permintaan, dan kemudian menetapkan pengecam CURLOPT_POST
dalam pilihan curl untuk permintaan POST, dan digunakan CURLOPT_POSTFIELDS
Tetapkan parameter POST. Akhir sekali, kami menggunakan curl untuk melaksanakan permintaan dan mengeluarkan hasilnya.
Apabila menggunakan curl, kita mungkin menghadapi masalah tamat masa. Untuk menyelesaikan masalah ini, curl menyediakan pilihan CURLOPT_TIMEOUT
dan CURLOPT_CONNECTTIMEOUT
.
CURLOPT_TIMEOUT
: Jika permintaan tamat tempoh, curl akan berhenti menunggu dan keluar serta-merta. CURLOPT_CONNECTTIMEOUT
: Jika curl mengambil masa lebih lama daripada bilangan saat yang ditetapkan oleh pilihan ini untuk mewujudkan sambungan dengan hos jauh, sambungan itu dianggap gagal dan curl akan berhenti menunggu dan keluar. Kod contoh:
$url = 'http://www.example.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 超时时间设置为10秒 $res = curl_exec($ch); curl_close($ch); echo $res;
Dalam kod di atas, kami menetapkan pilihan CURLOPT_TIMEOUT
dalam pilihan curl kepada 10 saat, yang bermaksud jika tamat masa permintaan melebihi 10 saat, curl Akan berhenti menunggu dan keluar.
Selain curl, PHP juga menyediakan beberapa fungsi permintaan http yang lain. Perkara yang paling asas ialah file_get_contents.
Kod contoh:
$url = 'http://www.example.com'; $res = file_get_contents($url); // 直接获取URL的内容 echo $res;
Dalam kod di atas, kami menggunakan fungsi file_get_contents()
terbina dalam PHP untuk mendapatkan terus kandungan URL dan menukarnya output.
Apabila menggunakan fungsi file_get_contents, kita mungkin perlu menetapkan tamat masa. Kita boleh mencipta aliran konteks melalui fungsi stream_context_create() dan kemudian menghantarnya sebagai parameter ketiga kepada fungsi file_get_contents().
Kod sampel:
$url = 'http://www.example.com'; $context = stream_context_create(array('http' => array('timeout' => 10))); // 超时时间设置为10秒 $res = file_get_contents($url, false, $context); echo $res;
Dalam kod di atas, kami mencipta strim konteks dan menetapkan tamat masanya kepada 10 saat. Kami kemudian menggunakan fungsi file_get_contents() dan lulus aliran konteks ke fungsi sebagai parameter ketiga.
fsockopen ialah fungsi dalam PHP yang digunakan untuk membuka soket. Kita boleh menggunakan ini untuk berkomunikasi secara langsung dengan pelayan.
Kod contoh:
$host = 'www.example.com'; $port = 80; $timeout = 10; $fp = fsockopen($host, $port, $errno, $errstr, $timeout); // 和服务器建立连接 $request = "GET / HTTP/1.1 "; $request .= "Host: $host "; $request .= "Connection: close "; // 请求头 fwrite($fp, $request); // 发送请求 while (!feof($fp)) { echo fgets($fp, 1024); // 输出结果 } fclose($fp); // 关闭连接
Dalam kod di atas, kami menggunakan fungsi fsockopen() untuk membuka sambungan soket dan mewujudkan sambungan ke port 80 hos www.example.com. Kami kemudian menetapkan pengepala permintaan GET dan menulisnya ke pelayan melalui soket. Akhir sekali, kami menggunakan gelung sementara untuk mengeluarkan keputusan dan fungsi fclose() untuk menutup sambungan.
Permintaan HTTP ialah salah satu asas pembangunan web. Artikel ini memperkenalkan fungsi permintaan http yang biasa digunakan dalam PHP dan cara menggunakannya. Memahami cara menggunakan fungsi ini boleh membantu kami melaksanakan fungsi yang sepadan dengan lebih mudah dan cekap.
Atas ialah kandungan terperinci Petua menggunakan fungsi permintaan HTTP PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!