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( पुस्तकालय में भी
C# (.NET) पर SMS भेजना: API लाइब्रेरी और कोड उदाहरण
NetworkExtension Swift: VPN और नेटवर्क एक्सटेंशन के लिए पूर्ण गाइड
Swift पर ईमेल भेजना: iOS/macOS के लिए लाइब्रेरी और उदाहरण
Node.js में QR कोड जनरेशन: qrcode लाइब्रेरी और उदाहरण
Rust में लॉगिंग: आपके प्रोजेक्ट के लिए सर्वश्रेष्ठ लाइब्रेरीज़ और समाधानों का अवलोकन