PHP के लिए gRPC: लाइब्रेरीज़ और कार्यान्वयन उदाहरण
gRPC (gRPC Remote Procedure Calls) एक उच्च-प्रदर्शन वाला रिमोट प्रक्रिया कॉल फ्रेमवर्क है, जिसे Google द्वारा विकसित किया गया है। यह इंटरफ़ेस विवरण और डेटा सीरियलाइज़ेशन के लिए Protocol Buffers (protobuf) का उपयोग करता है। REST के विपरीत, gRPC HTTP/2 पर काम करता है, द्वि-दिशात्मक स्ट्रीमिंग का समर्थन करता है और सख्त टाइपिंग प्रदान करता है। इस लेख में, हम देखेंगे कि PHP में gRPC कैसे कनेक्ट करें, किन लाइब्रेरीज़ का उपयोग करें, और क्लाइंट-सर्वर इंटरैक्शन का एक पूर्ण उदाहरण लिखेंगे।
PHP में gRPC के लिए लाइब्रेरीज़ का अवलोकन
PHP में gRPC के साथ काम करने के लिए दो मुख्य दृष्टिकोण उपलब्ध हैं:
- grpc.so एक्सटेंशन — gRPC से आधिकारिक C-एक्सटेंशन। अधिकतम प्रदर्शन प्रदान करता है, लेकिन सर्वर पर संकलन और कॉन्फ़िगरेशन की आवश्यकता होती है।
- शुद्ध PHP क्लाइंट (उदाहरण के लिए, Composer के माध्यम से
grpc/grpc) — cURL और HTTP/2 के माध्यम से काम करने वाला PHP कार्यान्वयन। धीमा है, लेकिन तैनात करना आसान है।
उत्पादन के लिए grpc एक्सटेंशन का उपयोग करने की अनुशंसा की जाती है, और विकास या परीक्षण के लिए शुद्ध PHP क्लाइंट का उपयोग करें।
आवश्यक घटकों की स्थापना
1. protoc और PHP के लिए प्लगइन की स्थापना
अपने ऑपरेटिंग सिस्टम के लिए आधिकारिक रिपॉजिटरी से protobuf कंपाइलर डाउनलोड करें। PHP कोड जनरेट करने के लिए protoc-gen-php-grpc प्लगइन की आवश्यकता होगी:
# protoc की स्थापना (Linux)wget https://github.com/protocolbuffers/protobuf/releases/download/v25.0/protoc-25.0-linux-x86_64.zipunzip protoc-25.0-linux-x86_64.zip -d /usr/local/protocexport PATH=$PATH:/usr/local/protoc/bin
# gRPC PHP के लिए प्लगइन की स्थापनाsudo apt-get install php-dev php-cli php-pearsudo pecl install grpcsudo pecl install protobuf2. Composer निर्भरताओं की स्थापना
एक प्रोजेक्ट बनाएं और आवश्यक पैकेज जोड़ें:
composer initcomposer require grpc/grpccomposer require google/protobuf.proto फ़ाइल बनाना
उपयोगकर्ताओं के साथ काम करने के लिए एक सरल सेवा परिभाषित करें। user.proto फ़ाइल बनाएं:
syntax = "proto3";
package user;
service UserService { rpc GetUser (UserRequest) returns (UserResponse); rpc ListUsers (Empty) returns (stream UserResponse);}
message UserRequest { int32 id = 1;}
message UserResponse { int32 id = 1; string name = 2; string email = 3;}
message Empty {}.proto से PHP कोड जनरेट करना
.proto को PHP क्लासेज़ में संकलित करने के लिए कमांड चलाएं:
protoc --php_out=./generated --grpc_out=./generated \ --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin \ user.protogenerated फ़ोल्डर में निम्न फ़ाइलें दिखाई देंगी:
GPBMetadata/User.php— प्रोटो फ़ाइल मेटाडेटाUser/UserRequest.php— अनुरोध वर्गUser/UserResponse.php— प्रतिक्रिया वर्गUser/UserServiceClient.php— सेवा को कॉल करने के लिए क्लाइंट
PHP पर gRPC सर्वर का कार्यान्वयन
सर्वर पक्ष के लिए आधिकारिक grpc एक्सटेंशन का उपयोग करें। server.php फ़ाइल बनाएं:
<?phprequire_once __DIR__ . '/vendor/autoload.php';require_once __DIR__ . '/generated/User/UserServiceInterface.php';require_once __DIR__ . '/generated/User/UserServiceServer.php';
use Grpc\\Server;use User\\UserRequest;use User\\UserResponse;use User\\UserServiceServer;
class MyUserService extends UserServiceServer{ public function GetUser(\\User\\UserRequest $request): \\User\\UserResponse { $response = new UserResponse(); $response->setId($request->getId()); $response->setName('John Doe'); $response->setEmail('john@exa पुस्तकालय में भी
libcurl C++: पूर्ण गाइड उदाहरणों के साथ
Rust के लिए Elasticsearch क्लाइंट: elasticsearch-rs लाइब्रेरी की पूरी गाइड
Rust में ZIP/आर्काइव के साथ कार्य: zip लाइब्रेरी और पूर्ण गाइड
JavaScript (Node.js) QR कोड जनरेटर: qrcode और qr-image लाइब्रेरी
TypeScript मशीन लर्निंग: ब्राउज़र और Node.js के लिए लाइब्रेरीज़