Pengenalan fungsi PHP—curl_multi_exec(): Jalankan sesi cURL dengan berbilang pemegang

PHPz
Lepaskan: 2023-07-25 06:04:02
asal
1101 orang telah melayarinya

Pengenalan fungsi PHP—curl_multi_exec(): Jalankan sesi cURL dengan berbilang pemegang

1 Pengenalan

cURL ialah perpustakaan sumber terbuka yang berkuasa untuk komunikasi rangkaian dalam PHP. Ia menyokong pelbagai protokol seperti HTTP, HTTPS, FTP, dll. dan menyediakan banyak pilihan yang kaya dengan ciri, menjadikannya mudah untuk menghantar permintaan dan mendapatkan respons.

Dalam banyak kes, kita perlu memproses berbilang permintaan URL pada masa yang sama, kemudian kita perlu menggunakan fungsi curl_multi_exec(). Fungsi ini membolehkan kami melaksanakan berbilang pemegang cURL pada masa yang sama, dengan itu meningkatkan kecekapan permintaan. Artikel ini akan memperkenalkan anda kepada penggunaan fungsi curl_multi_exec() secara terperinci dan memberikan contoh kod yang sepadan. curl_multi_exec()函数。该函数允许我们同时执行多个cURL句柄,从而提高请求的效率。本文将为大家详细介绍curl_multi_exec()函数的使用方法,并提供相应的代码示例。

2. 函数原型

int curl_multi_exec(resource $multi_handle, int &$still_running)

3. 参数说明

  • $multi_handle:cURL的多个句柄的资源,通过curl_multi_init()函数创建。
  • $still_running:一个变量,用于存储仍在运行的句柄数量。

4. 函数返回值

如果出现错误,curl_multi_exec()函数将返回一个错误码;否则,将返回0表示成功。

5. 示例代码

以下是一个使用curl_multi_exec()函数并发发送多个请求的示例代码:

<?php
// 创建cURL多个句柄
$multi_handle = curl_multi_init();

// 创建多个cURL会话并添加到多句柄中
$handles = array();
$handles[] = create_curl_handle("https://example.com/api1");
$handles[] = create_curl_handle("https://example.com/api2");
$handles[] = create_curl_handle("https://example.com/api3");

foreach ($handles as $handle) {
    curl_multi_add_handle($multi_handle, $handle);
}

// 执行多个cURL会话
$running = null;
do {
    curl_multi_exec($multi_handle, $running);
    curl_multi_select($multi_handle); // 等待I/O事件
} while ($running > 0);

// 获取每个请求的响应
foreach ($handles as $handle) {
    $response = curl_multi_getcontent($handle);
    // 处理响应数据
    echo $response;
    // 关闭cURL会话
    curl_multi_remove_handle($multi_handle, $handle);
    curl_close($handle);
}

// 关闭多个句柄
curl_multi_close($multi_handle);

// 创建一个cURL会话,并设置选项
function create_curl_handle($url) {
    $handle = curl_init();
    curl_setopt($handle, CURLOPT_URL, $url);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    return $handle;
}
?>
Salin selepas log masuk

上述代码首先创建了一个cURL多句柄资源,并通过循环创建了多个cURL会话。接下来,将这些会话添加到多句柄中,并执行多个cURL会话。在每次执行时,调用curl_multi_select()函数等待I/O事件。最后,通过curl_multi_getcontent()函数获取每个请求的响应,并进行相应处理。

6. 注意事项

  • 在使用curl_multi_exec()函数之前,一定要先调用curl_multi_add_handle()将每个会话添加到多句柄中。
  • 在使用curl_multi_getcontent()函数获取响应数据之前,一定要确保请求已完成,即运行中的句柄数为0。
  • 使用curl_multi_remove_handle()函数从多句柄中移除会话,并使用curl_close()关闭会话。

7. 总结

curl_multi_exec()

2. Prototaip fungsi🎜🎜int curl_multi_exec(sumber $multi_handle, int &$still_running)🎜🎜3 Perihalan parameter🎜
  • $multi_handle: Sumber berbilang pemegang cURL dicipta melalui fungsi curl_multi_init().
  • $still_running: Pembolehubah yang digunakan untuk menyimpan bilangan pemegang yang masih berjalan.
🎜4. Fungsi mengembalikan nilai🎜🎜Jika ralat berlaku, fungsi curl_multi_exec() akan mengembalikan kod ralat, jika tidak, ia akan mengembalikan 0 untuk menunjukkan kejayaan. 🎜🎜5. Contoh kod🎜🎜Berikut ialah contoh kod yang menggunakan fungsi curl_multi_exec() untuk menghantar berbilang permintaan serentak: 🎜rrreee🎜Kod di atas mula-mula mencipta sumber berbilang pemegang cURL dan mencipta ia melalui gelung Berbilang sesi curl. Seterusnya, tambahkan sesi ini pada multihandle dan laksanakan berbilang sesi cURL. Semasa setiap pelaksanaan, fungsi curl_multi_select() dipanggil untuk menunggu acara I/O. Akhir sekali, dapatkan respons setiap permintaan melalui fungsi curl_multi_getcontent() dan proseskannya dengan sewajarnya. 🎜🎜6. Nota🎜
  • Sebelum menggunakan fungsi curl_multi_exec(), pastikan anda memanggil curl_multi_add_handle() untuk menambah setiap sesi pada multi-handle tengah.
  • Sebelum menggunakan fungsi curl_multi_getcontent() untuk mendapatkan data respons, pastikan anda memastikan bahawa permintaan telah dilengkapkan, iaitu bilangan pemegang yang sedang berjalan ialah 0.
  • Gunakan fungsi curl_multi_remove_handle() untuk mengalih keluar sesi daripada multihandle dan gunakan curl_close() untuk menutup sesi.
🎜7. Summary🎜🎜 Fungsicurl_multi_exec() ialah fungsi yang sangat berguna yang boleh melaksanakan berbilang sesi cURL pada masa yang sama untuk meningkatkan kecekapan permintaan. Melalui contoh kod di atas, kita boleh memahami cara menggunakan fungsi ini untuk menghantar berbilang permintaan serentak dan mendapatkan data respons untuk setiap permintaan. Dalam pembangunan sebenar, kami boleh terus mengoptimumkan dan mengembangkan kod sampel ini mengikut keperluan kami sendiri. 🎜

Atas ialah kandungan terperinci Pengenalan fungsi PHP—curl_multi_exec(): Jalankan sesi cURL dengan berbilang pemegang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan