Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sambungan GRPC baharu diperkenalkan dalam PHP8.1

Sambungan GRPC baharu diperkenalkan dalam PHP8.1

WBOY
WBOYasal
2023-07-08 18:57:072153semak imbas

Pelanjutan GRPC baharu yang diperkenalkan dalam PHP8.1

PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas yang boleh menjana kandungan web secara dinamik dengan berinteraksi dengan pelayan web. Untuk memenuhi keperluan seni bina perkhidmatan moden dengan lebih baik, versi PHP8.1 memperkenalkan sambungan GRPC baharu, yang meningkatkan lagi prestasi dan kebolehskalaan PHP. Artikel ini akan memperkenalkan konsep asas sambungan GRPC dan memberikan beberapa contoh kod untuk membantu pembaca memahami dan menggunakan ciri baharu ini dengan lebih baik.

1. Pengenalan kepada GRPC
GRPC ialah rangka kerja RPC (panggilan prosedur jauh) berprestasi tinggi dan tujuan umum. RPC ialah protokol komunikasi komputer yang membenarkan atur cara memanggil terus fungsi atau kaedah pada komputer lain tanpa mengetahui butiran rangkaian asas. GRPC adalah berdasarkan pelaksanaan protokol HTTP/2 sumber terbuka Google dan menggunakan protokol penghantaran binari dengan ciri-ciri berikut:

  1. Pensirilan dan penyahsiran yang cekap: GRPC menggunakan Penampan Protokol sebagai mekanisme penyirian lalai Berbanding dengan JSON dan XML, dsb. Teks format lebih cekap.
  2. Penstriman Boleh Dipercayai: GRPC menyokong penstriman dwiarah, mampu melakukan berbilang permintaan dan respons bebas secara serentak pada satu sambungan rangkaian.
  3. Sokongan berbilang bahasa: GRPC menyokong berbilang bahasa pengaturcaraan, termasuk C++, Java, Go, Python, dll.
  4. Alat automasi: GRPC menyediakan pelbagai alatan penjanaan kod yang boleh menjana kod sisi klien dan pelayan untuk bahasa pengaturcaraan yang berbeza.

2. Pasang sambungan GRPC
Sebelum mula menggunakan GRPC, kita perlu memasang sambungan GRPC terlebih dahulu. Dalam PHP8.1, sokongan untuk sambungan GRPC disediakan secara lalai Kami boleh memasangnya melalui langkah berikut:

  1. Pasang versi PHP8.1
  2. Pasang sambungan GRPC: Gunakan arahan PECL untuk memasang sambungan GRPC. modul, seperti yang ditunjukkan di bawah:

    pecl install grpc
  3. Dayakan sambungan GRPC dalam fail php.ini: Tambahkan konfigurasi berikut dalam fail php.ini:

    extension=grpc

3. Gunakan sambungan GRPC
Selepas pemasangan selesai , kita boleh menggunakan sambungan GRPC untuk membuat panggilan prosedur jauh. Di bawah ini kami memberikan contoh mudah untuk menggambarkan cara menggunakan sambungan GRPC.

  1. Tentukan antara muka
    Pertama, kita perlu mentakrifkan fail antara muka (.proto file) untuk menerangkan struktur data dan kaedah antara muka. Contohnya, kami mentakrifkan antara muka Greeter, termasuk kaedah SayHello:

    syntax = "proto3";
    
    service Greeter {
      rpc SayHello (HelloRequest) returns (HelloResponse) {}
    }
    
    message HelloRequest {
      string name = 1;
    }
    
    message HelloResponse {
      string message = 1;
    }
  2. Jana kod
    Seterusnya, kami menggunakan alat penjanaan kod yang disediakan oleh GRPC untuk menjana kod klien dan pelayan yang sepadan berdasarkan fail .proto. Mula-mula, kita perlu memasang alat Protocol Buffers, dan kemudian laksanakan arahan berikut untuk menjana kod:

    protoc --php_out=./out --grpc_out=./out --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin greeter.proto

    Selepas melaksanakan arahan di atas, direktori keluar akan dijana yang mengandungi fail kod PHP yang dijana.

  3. Melaksanakan bahagian pelayan
    Seterusnya, kita boleh melaksanakan kod sisi pelayan. Dalam kod, kita perlu melaksanakan kaedah yang ditakrifkan oleh antara muka. Contohnya:

    class GreeterImpl extends GreeterGreeterService
    {
     public function SayHello(GreeterHelloRequest $request): GreeterHelloResponse
     {
         $response = new GreeterHelloResponse();
         $response->setMessage("Hello, " . $request->getName());
         return $response;
     }
    }
  4. Mulakan pelayan
    Kita boleh memulakan pelayan GRPC dan mendengar port yang ditentukan melalui kod berikut:

    $server = new SwooleServer('0.0.0.0', 50051, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
    $server->set([
     'ssl_cert_file' => 'server.crt',
     'ssl_key_file' => 'server.key',
    ]);
    $server->on("start", function (SwooleServer $server) {
     echo "GRPC server is started at 0.0.0.0:50051
    ";
    });
    $server->on("receive", function (SwooleServer $server, $fd, $fromId, $data) {
     $server->send($fd, $data);
    });
    $server->start();
  5. Panggilan pelanggan
    Akhir sekali, kita boleh menulis kod pelanggan untuk memanggil pelayan jauh melalui kaedah rangkaian. Contohnya:

    $client = new GreeterGreeterClient('127.0.0.1:50051');
    $request = new GreeterHelloRequest();
    $request->setName("PHP");
    $response = $client->SayHello($request);
    echo $response->getMessage();

Melalui contoh kod di atas, kita boleh belajar cara menggunakan sambungan GRPC untuk membuat panggilan prosedur jauh dalam PHP8.1. Sambungan GRPC menyediakan kaedah komunikasi jauh yang lebih cekap dan boleh dipercayai, membantu membina sistem teragih moden. Dalam projek sebenar, kami boleh menggunakan sambungan GRPC secara fleksibel untuk membina seni bina perkhidmatan mikro merentas bahasa berdasarkan keperluan perniagaan.

Ringkasan
Pelanjutan GRPC ialah ciri penting yang diperkenalkan dalam versi PHP8.1, yang membolehkan PHP mempunyai keupayaan RPC yang lebih cekap dan berskala. Melalui contoh kod, kami memahami konsep asas dan penggunaan sambungan GRPC Kami berharap pembaca dapat mempelajari dan menggunakan ciri baharu ini dan meningkatkan keupayaan pembangunan PHP mereka.

Atas ialah kandungan terperinci Sambungan GRPC baharu diperkenalkan dalam PHP8.1. 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