Rumah  >  Artikel  >  rangka kerja php  >  Saling kendali antara perkhidmatan RPC dan perkhidmatan Web yang dibina oleh TP6 Think-Swoole

Saling kendali antara perkhidmatan RPC dan perkhidmatan Web yang dibina oleh TP6 Think-Swoole

WBOY
WBOYasal
2023-10-12 11:58:461337semak imbas

TP6 Think-Swoole构建的RPC服务与Web服务的互通

TP6 Saling kendali antara perkhidmatan RPC dan perkhidmatan Web yang dibina oleh Think-Swoole

Dengan pembangunan Internet, semakin banyak keperluan aplikasi memerlukan pembinaan sistem teragih. Apabila membina sistem teragih, RPC (Remote Procedure Call) ialah mekanisme komunikasi yang penting, yang boleh mendayakan panggilan jauh antara nod perkhidmatan yang berbeza.

Dalam pembangunan, kami sering menggunakan ThinkPHP sebagai rangka kerja asas aplikasi, dan Swoole ialah rangka kerja tak segerak dan serentak PHP yang sangat baik. Menggabungkan kedua-dua rangka kerja ini, perkhidmatan RPC berprestasi tinggi boleh dibina dengan baik.

Artikel ini akan memperkenalkan cara menggunakan TP6 Think-Swoole untuk membina perkhidmatan RPC dan mencapai kesalingoperasian dengan perkhidmatan Web.

Dalam langkah pertama, kita perlu memasang ThinkPHP6 dan Swoole terlebih dahulu. Boleh dipasang melalui Komposer. Masukkan arahan berikut dalam baris arahan:

composer create-project topthink/think
composer require swoole/swoole

Selepas pemasangan selesai, kita perlu mengkonfigurasi ThinkPHP6 dan Swoole. Dalam direktori akar projek, cari fail .env dan edit maklumat konfigurasi: .env文件,编辑其中的配置信息:

APP_NAMESPACE=app
APP_DEBUG=false

[SERVER]
SERVER_SOFTWARE=swoole-http-server
SERVER_PORT=9501
SERVER_HOST=0.0.0.0

在上面的配置中,我们指定了服务器的端口号为9501,监听的地址为0.0.0.0,可以根据实际需求进行修改。

接下来,我们需要创建一个RPC控制器。在ThinkPHP6中,控制器位于app目录下的controller文件夹中。我们创建一个名为RpcController的控制器,并添加一个名为hello的方法,用于处理RPC请求。

app/controller目录下创建一个名为RpcController的PHP文件,并添加以下代码:

<?php
namespace appcontroller;

class RpcController
{
    public function hello($name)
    {
        return "Hello, " . $name . "!";
    }
}

在上述代码中,我们定义了一个名为hello的方法,接收一个$name参数,并返回一个包含问候语的字符串。

接下来,我们需要在Swoole服务器脚本中添加对RPC服务的支持。我们需要修改public/index.php文件,添加以下代码到thinkApp实例化之前:

use SwooleCoroutineScheduler;
use thinkswooleServer;

// 创建一个Swoole服务器实例
$server = new Server('0.0.0.0', '9501');
// 添加对RpcController的支持
$server->set([
    'handle_rpc' => function ($server, $fd, $fromId, $data) {
        $scheduler = new Scheduler;
        $scheduler->add(function () use ($server, $fd, $fromId, $data) {
            $result = app('rpc')->run($data);
            $server->send($fd, $result);
        });
        $scheduler->start();
    },
]);
// 启动服务器
$server->start();

在上述代码中,我们通过创建一个swoole hinkServer实例,然后使用set方法来添加对RPC控制器的支持。在上述代码中,我们使用了handle_rpc方法来处理RPC请求,通过app('rpc')->run($data)来调用RpcController

php think swoole:start

Dalam konfigurasi di atas, kami menetapkan nombor port pelayan sebagai 9501 dan alamat pendengaran sebagai 0.0 , yang boleh diubah suai mengikut keperluan sebenar.

Seterusnya, kita perlu mencipta pengawal RPC. Dalam ThinkPHP6, pengawal terletak dalam folder controller di bawah direktori app. Kami mencipta pengawal bernama RpcController dan menambah kaedah bernama hello untuk mengendalikan permintaan RPC.

Buat fail PHP bernama RpcController dalam direktori app/controller dan tambahkan kod berikut:

curl 127.0.0.1:9501 -d '{"jsonrpc": "2.0", "method": "hello", "params": ["Alice"], "id": 1}'

Dalam kod di atas, kami mentakrifkan fail bernama The method of hello menerima parameter $name dan mengembalikan rentetan yang mengandungi ucapan itu.

Seterusnya, kita perlu menambah sokongan untuk perkhidmatan RPC dalam skrip pelayan Swoole. Kami perlu mengubah suai fail public/index.php dan menambah kod berikut sebelum thinkApp digunakan:

{"jsonrpc":"2.0","result":"Hello, Alice!","id":1}

Dalam kod di atas, kami mencipta swoole hinkServer contoh, dan kemudian gunakan kaedah set untuk menambah sokongan untuk pengawal RPC. Dalam kod di atas, kami menggunakan kaedah handle_rpc untuk mengendalikan permintaan RPC dan memanggil RpcController melalui app('rpc')->run($data) dan kembalikan hasilnya kepada klien.

Pada ketika ini, kami telah menyelesaikan pembinaan perkhidmatan RPC. Mari kita uji di bawah. 🎜🎜Mula-mula, jalankan arahan berikut dalam baris arahan untuk memulakan pelayan Swoole: 🎜rrreee🎜 Kemudian, buka terminal baharu dan gunakan arahan curl untuk menghantar permintaan RPC: 🎜rrreee🎜 Jika semuanya baik, anda akan melihat kembali dalam terminal Keputusan: 🎜rrreee🎜Setakat ini, kami telah berjaya membina perkhidmatan RPC berdasarkan TP6 Think-Swoole dan mencapai kesalingoperasian dengan perkhidmatan Web. 🎜🎜Dalam artikel ini, kami berjaya membina perkhidmatan berasaskan RPC dan mencapai kesalingoperasian dengan perkhidmatan Web dengan menggunakan ThinkPHP6 dan Swoole. Dengan cara ini, aplikasi kami boleh dibuat lebih fleksibel dan cekap. Saya harap artikel ini dapat membantu semua orang. 🎜

Atas ialah kandungan terperinci Saling kendali antara perkhidmatan RPC dan perkhidmatan Web yang dibina oleh TP6 Think-Swoole. 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