Rumah >pembangunan bahagian belakang >masalah PHP >Apakah maksud pemberitahuan tak segerak dalam php?

Apakah maksud pemberitahuan tak segerak dalam php?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2023-06-20 10:44:331320semak imbas

Pemberitahuan tak segerak PHP boleh difahami secara ringkas sebagai mekanisme ini digunakan untuk merealisasikan interaksi data atau dok antara muka antara sistem Ia boleh memastikan penyegerakan dan ketepatan data kedua-dua pihak dan mengelakkan selang kemas kini data yang tidak konsisten antara kedua-dua pihak Isu seperti pembayaran yang berjaya tetapi keputusan yang gagal.

Apakah maksud pemberitahuan tak segerak dalam php?

Sistem pengendalian untuk tutorial ini: Sistem Windows 10, versi php8.1.3, komputer Dell G3.

1. Apakah pemberitahuan tak segerak PHP?

Pemberitahuan tak segerak PHP boleh difahami secara ringkas sebagai mekanisme, yang digunakan untuk merealisasikan interaksi data atau dok antara muka antara sistem . Sudah tentu, dalam pembangunan sebenar, tidak kira bahasa atau kerangka apa pun, ia mempunyai kaedah dan ciri pelaksanaannya yang tersendiri.

Secara khusus mengenai pemberitahuan tak segerak PHP, ia biasanya merujuk kepada kaedah panggil balik yang dilaksanakan oleh penerima (iaitu pelayan) semasa menjalankan transaksi seperti pembayaran dan API pihak ketiga - panggilan balik pemberitahuan tak segerak.

2. Peranan pemberitahuan tak segerak PHP

Untuk kebanyakan urus niaga, selalunya diperlukan untuk mengendalikan kedua-dua pihak pada masa yang sama, dan urutan kemas kini data pada kedua-dua hujungnya perlu konsisten, jika tidak, ia akan menyebabkan beberapa masalah keselamatan data dengan mudah. Oleh itu, pereka sistem perlu menggunakan pemberitahuan tak segerak selepas transaksi selesai untuk memastikan penyegerakan dan ketepatan data kedua-dua pihak.

Untuk menggambarkannya, sebagai contoh, pertimbangkan senario transaksi beli-belah dalam talian Apabila pengguna membuat pembayaran dalam talian, kod QR pembayaran yang sepadan akan muncul di kaunter penerimaan tetamu, dan kod QR akan dipindahkan ke. halaman pembayaran melalui pemindahan pelayan , selepas alat pembayaran pengguna mengimbas dan menyelesaikan pembayaran, kod QR akan mengembalikan maklumat pengesahan dan mengemas kini pangkalan data. Kemudian, pangkalan data akan mengembalikan maklum balas status yang sepadan ke bahagian hadapan untuk paparan berdasarkan sama ada transaksi berjaya atau tidak.

Jika tiada fungsi pemberitahuan tak segerak, semua status pesanan mesti dikemas kini secara serentak, dan adalah mustahil untuk mengelakkan masalah seperti pembayaran berjaya tetapi gagal memaparkan hasil apabila selang masa kemas kini data antara kedua-dua pihak tidak konsisten .

3. Pelaksanaan pemberitahuan tak segerak PHP

Pelaksanaan pemberitahuan tak segerak PHP biasanya boleh menggunakan perpustakaan curl atau fungsi fsockopen >

Gunakan perpustakaan curl untuk melaksanakan pemberitahuan tak segerak:

$url = "https://example.com/notify_url.php"; // 异步通知接口地址
$data = array(
    'order_id' => 001, // 订单号
    'amount' => 100, // 金额
    'status' => 1, // 状态码
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // post请求数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置超时时间
curl_exec($ch);
curl_close($ch);

Gunakan fungsi fsockopen untuk melaksanakan pemberitahuan tak segerak:

$url = "example.com"; // 服务器域名
$port = 80; // 服务器端口
$path = "/notify_url.php"; // 异步通知接口地址
$data = array(
    'order_id' => 001, // 订单号
    'amount' => 100, // 金额
    'status' => 1, // 状态码
);
$requestBody = http_build_query($data); // 构造post请求数据
$contentLength = strlen($requestBody); // 请求主体长度
$header = "POST {$path} HTTP/1.1\r\n";
$header .= "Host: {$url}\r\n";
$header .= "Content-type: application/x-www-form-urlencoded\r\n";
$header .= "Content-length: {$contentLength}\r\n";
$header .= "Connection: close\r\n\r\n";
$header .= $requestBody; // 拼接http头和请求主体
$fp = fsockopen($url, $port, $errno, $errstr, 30); // 建立socket连接
if ($fp) { // 发送请求并获取返回结果
    fwrite($fp, $header);
    stream_set_timeout($fp, 30);
    $response = stream_get_meta_data($fp);
    fclose($fp);
}

Atas ialah kandungan terperinci Apakah maksud pemberitahuan tak segerak dalam php?. 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