gRPC PHP: लाइब्रेरी, इंस्टॉलेशन और कोड उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

gRPC PHP: लाइब्रेरी और उदाहरण

gRPC एक आधुनिक, हाई-परफॉर्मेंस RPC (रिमोट प्रोसीजर कॉल) फ्रेमवर्क है जिसे Google ने विकसित किया है। यह ट्रांसपोर्ट के लिए HTTP/2 और डेटा सीरियलाइजेशन के लिए Protocol Buffers (protobuf) का उपयोग करता है, और PHP सहित कई भाषाओं को सपोर्ट करता है। इस लेख में, हम सीखेंगे कि gRPC को PHP प्रोजेक्ट से कैसे जोड़ें, किन लाइब्रेरी की जरूरत है, और क्लाइंट-सर्वर इंटरैक्शन का एक काम करने वाला उदाहरण लिखेंगे।

PHP में gRPC क्यों जरूरी है?

पारंपरिक REST API अक्सर JSON और HTTP/1.1 पर काम करते हैं, जिससे डेटा रिडंडेंसी और धीमी सीरियलाइजेशन होती है। gRPC इन समस्याओं को हल करता है:

  • बाइनरी प्रोटोकॉल — protobuf JSON से कम जगह लेता है और तेजी से प्रोसेस होता है।
  • HTTP/2 — मल्टीप्लेक्सिंग, हेडर कंप्रेशन, स्ट्रीमिंग ट्रांसमिशन।
  • सख्त टाइपिंग — कॉन्ट्रैक्ट .proto फाइलों में परिभाषित होते हैं, जिससे डेवलपमेंट और डिबगिंग आसान हो जाती है।
  • दो-तरफा स्ट्रीमिंग — सर्वर और क्लाइंट एसिंक्रोनस रूप से डेटा का आदान-प्रदान कर सकते हैं।

PHP में gRPC के लिए मुख्य लाइब्रेरी

PHP में gRPC के साथ काम करने के लिए दो घटकों की आवश्यकता होती है:

  • grpc.so — PHP एक्सटेंशन (C-एक्सटेंशन) जो HTTP/2 और gRPC प्रोटोकॉल को लागू करता है।
  • protobuf.so — protobuf सीरियलाइजेशन के लिए एक्सटेंशन (वैकल्पिक रूप से शुद्ध PHP पैकेज google/protobuf का उपयोग किया जा सकता है)।
  • कम्पोज़र पैकेज: grpc/grpc और google/protobuf।

अनुशंसित इंस्टॉलेशन विधि PECL (एक्सटेंशन) और Composer (डिपेंडेंसी) के माध्यम से है।

gRPC और protobuf की स्थापना

Linux (Ubuntu/Debian) सर्वर के लिए:

# PECL के माध्यम से एक्सटेंशन इंस्टॉल करें
sudo pecl install grpc
sudo pecl install protobuf

# php.ini में जोड़ें
echo "extension=grpc.so" >> /etc/php/8.2/cli/php.ini
echo "extension=protobuf.so" >> /etc/php/8.2/cli/php.ini

Windows के लिए, PECL से DLL फ़ाइलें डाउनलोड करें और php.ini में उनका पथ निर्दिष्ट करें।

इसके बाद, Composer के माध्यम से लाइब्रेरी स्थापित करें:

composer require grpc/grpc
composer require google/protobuf

.proto फ़ाइल बनाना

उपयोगकर्ताओं के साथ काम करने के लिए एक सेवा परिभाषित करें। user.proto फ़ाइल बनाएं:

syntax = "proto3";

package user;

service UserService {
    rpc GetUser (UserRequest) returns (UserResponse);
    rpc ListUsers (Empty) returns (UserList);
}

message UserRequest {
    int32 id = 1;
}

message UserResponse {
    int32 id = 1;
    string name = 2;
    string email = 3;
}

message Empty {}

message UserList {
    repeated UserResponse users = 1;
}

.proto से PHP क्लासेस जनरेट करना

protoc और PHP प्लगइन स्थापित करें:

# https://github.com/protocolbuffers/protobuf/releases से protoc डाउनलोड करें
# फिर कोड जनरेट करें:
protoc --php_out=./generated --grpc_out=./generated --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin user.proto

generated फ़ोल्डर में क्लासेस दिखाई देंगी: UserRequest, UserResponse, UserServiceClient और अन्य।

PHP में gRPC सर्वर का उदाहरण

एक सर्वर बनाएं जो अनुरोधों का जवाब देगा। फ़ाइल server.php:

require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/generated/UserServiceServer.php';

use Grpc\Server;
use User\UserServiceServer;
use User\UserRequest;
use User\UserResponse;

class MyUserService extends UserServiceServer
{
    public function GetUser(\Grpc\ServerCallReader $request, \Grpc\ServerCallWriter $response, \Grpc\ServerContext $context): void
    {
        $req = $request->read();
        $id = $req->getId();

        $user = new UserResponse();
        $user->setId($id);
        $user->setName("User #$id");
        $user->setEmail("user$id@example.com");

        $response->finish(                    

अनुशंसाएँ