Rumah >pembangunan bahagian belakang >tutorial php >Pengenalan fungsi PHP—curl_multi_init(): Memulakan sesi cURL berbilang

Pengenalan fungsi PHP—curl_multi_init(): Memulakan sesi cURL berbilang

王林
王林asal
2023-07-24 12:40:471060semak imbas

Pengenalan fungsi PHP—curl_multi_init(): Memulakan sesi dengan berbilang cURL

Pengenalan:
Dalam PHP, fungsi curl_multi_init() digunakan untuk memulakan sesi dengan berbilang cURL dan boleh mengendalikan berbilang permintaan URL pada masa yang sama. Fungsi ini mencipta pemegang curl_multi baharu dan mengembalikan pemegang sumber. Dalam sesi ini, kita boleh menambah berbilang pemegang cURL dan melaksanakannya untuk mencapai tujuan memproses berbilang URL pada masa yang sama.

Sintaks:
resource curl_multi_init(void)

Nilai pulangan:
Jika berjaya, kembalikan pemegang sesi, jika gagal, kembalikan FALSE.

Contoh Kod:
Berikut ialah contoh kod ringkas yang menunjukkan cara menggunakan fungsi curl_multi_init() untuk memulakan sesi cURL berbilang dan mengendalikan dua permintaan URL pada masa yang sama.

<?php
// 初始化会话
$mh = curl_multi_init();

// 创建URL列表
$urls = array(
    'http://www.example.com/url1',
    'http://www.example.com/url2'
);

// 创建cURL句柄并添加到会话
$handles = array();
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $handles[] = $ch;
}

// 执行会话中的cURL句柄
$active = null;
do {
    $result = curl_multi_exec($mh, $active);
} while ($result == CURLM_CALL_MULTI_PERFORM || $active);

// 处理结果
foreach ($handles as $handle) {
    $response = curl_multi_getcontent($handle);
    // 处理响应数据
    echo $response;
    
    // 移除句柄和关闭cURL
    curl_multi_remove_handle($mh, $handle);
    curl_close($handle);
}

// 关闭会话
curl_multi_close($mh);
?>

Analisis:
Dalam kod contoh di atas, sesi mula-mula dimulakan menggunakan fungsi curl_multi_init() dan kemudian senarai URL dibuat. Seterusnya, gelung foreach digunakan untuk melintasi senarai URL, dan berbilang pemegang cURL dicipta menggunakan fungsi curl_init(). Pilihan CURLOPT_RETURNTRANSFER ditetapkan supaya data respons dikembalikan. Kemudian gunakan fungsi curl_multi_add_handle() untuk menambah setiap pemegang pada sesi dan simpan pemegang pada tatasusunan $handles.

Selepas itu, gunakan fungsi curl_multi_exec() untuk melaksanakan semua pemegang secara serentak dalam sesi. Dapatkan nilai pulangan $result dan bilangan pemegang aktif $active, dan tentukan sama ada pelaksanaan perlu diteruskan dalam gelung do-while.

Selepas gelung tamat, gunakan fungsi curl_multi_getcontent() untuk mendapatkan data tindak balas setiap pemegang dan memprosesnya. Kemudian gunakan fungsi curl_multi_remove_handle() untuk mengeluarkan pemegang daripada sesi dan gunakan fungsi curl_close() untuk menutup setiap pemegang cURL.

Akhir sekali, gunakan fungsi curl_multi_close() untuk menutup sesi.

Ringkasan:
Dengan menggunakan fungsi curl_multi_init(), kita boleh dengan mudah memulakan sesi cURL berbilang dan melaksanakan fungsi memproses berbilang permintaan URL pada masa yang sama. Ini berguna apabila anda perlu meminta berbilang API atau memuat turun berbilang fail pada masa yang sama. Menggunakan fungsi curl_multi_init() boleh meningkatkan kecekapan dan kelajuan tindak balas program.

Jadi, mempelajari dan menguasai fungsi curl_multi_init() dan fungsi cURL lain yang berkaitan boleh memberi anda pemahaman yang lebih mendalam dan aplikasi fungsi permintaan rangkaian PHP.

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

Kenyataan:
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