Bagaimana untuk melaksanakan pembangunan tak segerak fungsi PHP menggunakan perkhidmatan mikro?
Dengan perkembangan pesat Internet, keperluan perniagaan menjadi semakin kompleks, meletakkan keperluan yang lebih tinggi pada prestasi sistem dan pengalaman pengguna. Dalam pembangunan PHP, pelaksanaan tak segerak telah menjadi trend. Seni bina perkhidmatan mikro ialah cara membina sistem teragih yang menjadikan sistem lebih mudah untuk dikembangkan dan diselenggara dengan membahagikan sistem kepada berbilang perkhidmatan bebas. Artikel ini akan memperkenalkan cara menggunakan perkhidmatan mikro untuk melaksanakan pembangunan tak segerak bagi fungsi PHP dan memberikan contoh kod khusus.
Pertama, kita perlu memasang pelayan RabbitMQ dan menggunakan perpustakaan klien RabbitMQ dalam projek PHP. Anda boleh menggunakan komposer untuk mengurus kebergantungan projek dan laksanakan arahan berikut untuk memasang:
composer require php-amqplib/php-amqplib
Selepas pemasangan selesai, kita boleh mula menggunakan RabbitMQ dalam projek PHP.
Pertama, kami mencipta pengeluar dan menghantar mesej ke baris gilir:
<?php require_once __DIR__.'/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage; $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); $message = new AMQPMessage('Hello World!'); $channel->basic_publish($message, '', 'hello'); echo " [x] Sent 'Hello World!' "; $channel->close(); $connection->close();
Kemudian, kami mencipta pengguna untuk mendapatkan mesej daripada baris gilir Dan proses ia:
<?php require_once __DIR__.'/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); echo " [*] Waiting for messages. To exit press CTRL+C "; $callback = function ($message) { echo ' [x] Received ', $message->body, " "; }; $channel->basic_consume('hello', '', false, true, false, false, $callback); while (count($channel->callbacks)) { $channel->wait(); } $channel->close(); $connection->close();
Melalui kod di atas, kita dapat melihat bahawa pengeluar menghantar mesej ke baris gilir, dan pengguna memperoleh mesej melalui fungsi panggil balik dan memprosesnya. Dengan cara ini kami melaksanakan model pengeluar dan pengguna yang mudah.
Berikut mengambil perkhidmatan pengguna dan perkhidmatan pesanan sebagai contoh untuk menunjukkan cara menggunakan baris gilir mesej untuk mencapai pembangunan tak segerak dalam seni bina perkhidmatan mikro.
Pertama, kami mencipta perkhidmatan pengguna, yang bertanggungjawab untuk mengendalikan permintaan pendaftaran pengguna:
<?php require_once __DIR__.'/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage; $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('register', false, false, false, false); $message = new AMQPMessage(json_encode(['username' => 'example', 'password' => '123456'])); $channel->basic_publish($message, '', 'register'); echo " [x] Sent 'Register Request' "; $channel->close(); $connection->close();
Kemudian, kami mencipta perkhidmatan pesanan, yang melanggan permintaan pendaftaran pengguna , dan Jana pesanan baharu:
<?php require_once __DIR__.'/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('register', false, false, false, false); echo " [*] Waiting for register requests. To exit press CTRL+C "; $callback = function ($message) { $data = json_decode($message->body, true); // 处理注册请求,生成订单等操作 echo ' [x] Received Register Request: ', $message->body, " "; }; $channel->basic_consume('register', '', false, true, false, false, $callback); while (count($channel->callbacks)) { $channel->wait(); } $channel->close(); $connection->close();
Melalui kod di atas, perkhidmatan pengguna menghantar permintaan pendaftaran ke baris gilir mesej, dan perkhidmatan pesanan memproses permintaan pendaftaran selepas menerimanya. Dengan cara ini, kami telah melaksanakan komunikasi mudah antara perkhidmatan pengguna dan perkhidmatan pesanan.
Ringkasan:
Dengan menggunakan seni bina perkhidmatan mikro dan baris gilir mesej, pembangunan tak segerak bagi fungsi PHP boleh dicapai. Pisahkan sistem kepada berbilang perkhidmatan mikro, setiap perkhidmatan mikro mempunyai baris gilir mesej sendiri dan berkomunikasi melalui baris gilir mesej. Ini boleh meningkatkan prestasi serentak dan kelajuan tindak balas sistem, mencapai penyahgandingan tugas, dan meningkatkan kestabilan dan kebolehskalaan sistem. Saya harap artikel ini akan membantu anda memahami pembangunan tak segerak bagi perkhidmatan mikro.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pembangunan tak segerak fungsi PHP menggunakan perkhidmatan mikro?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!