Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Membuat Permintaan HTTP Asynchronous dalam PHP Tanpa Menyekat Pelaksanaan?

Bagaimanakah Saya Boleh Membuat Permintaan HTTP Asynchronous dalam PHP Tanpa Menyekat Pelaksanaan?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 00:05:11455semak imbas

How Can I Make Asynchronous HTTP Requests in PHP Without Blocking Execution?

Permintaan HTTP Tak Segerak dalam PHP

Dalam situasi tertentu, mungkin perlu untuk memulakan permintaan HTTP tanpa menunggu respons pelayan. Pendekatan ini amat berguna untuk mencetuskan peristiwa atau proses tak segerak dalam aplikasi.

Teknik berikut membolehkan anda membuat permintaan HTTP dalam PHP tanpa menyekat pelaksanaan kod anda:

Menggunakan fsockopen

Fungsi fsockopen PHP boleh digunakan untuk mewujudkan sambungan soket dengan alat kawalan jauh pelayan. Setelah disambungkan, data boleh dihantar ke pelayan menggunakan fwrite. Walau bagaimanapun, daripada menunggu jawapan, sambungan boleh ditutup serta-merta, meninggalkan permintaan untuk diselesaikan secara tak segerak.

Berikut ialah contoh fungsi yang melaksanakan permintaan HTTP POST tak segerak:

function post_without_wait($url, $params) {
    // Convert parameters to a string
    $post_string = http_build_query($params);

    // Parse the URL
    $parts = parse_url($url);

    // Open a socket connection
    $fp = fsockopen($parts['host'],
        isset($parts['port']) ? $parts['port'] : 80,
        $errno, $errstr, 30);

    // Construct and send the HTTP request
    $request = "POST " . $parts['path'] . " HTTP/1.1\r\n";
    $request .= "Host: " . $parts['host'] . "\r\n";
    $request .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $request .= "Content-Length: " . strlen($post_string) . "\r\n";
    $request .= "Connection: Close\r\n\r\n";
    if (isset($post_string)) {
        $request .= $post_string;
    }

    fwrite($fp, $request);

    // Close the socket connection
    fclose($fp);
}

Fungsi ini boleh digunakan untuk mencetuskan permintaan HTTP tanpa menunggu respons pelayan. Perlu diingat bahawa respons pelayan tidak akan tersedia dalam aplikasi anda, jadi adalah penting untuk tidak bergantung padanya untuk sebarang pemprosesan selanjutnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Permintaan HTTP Asynchronous dalam PHP Tanpa Menyekat Pelaksanaan?. 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