Tartışma

PHP gRPC Kullanımı

Başlatan CyberReis · 27 Tem 2026 03:51 · 0 Görüntülenme · 0 Yanıtlar
Konuyu Açan #0
gRPC, Google tarafından geliştirilmiş modern bir uzak prosedür çağrısı (RPC) sistemidir. Performansı ve verimliliği artırmayı hedefleyen gRPC, birçok programlama dilinde kullanılabilir. PHP ile gRPC kullanmak, özellikle mikro hizmet mimarileri için oldukça avantajlıdır. Bu yazıda, PHP ile gRPC kullanımının temel adımlarını ele alacağız.

Öncelikle, gRPC'yi PHP projenize entegre etmek için gerekli olan bazı bileşenleri yüklemeniz gerekir. Terminal üzerinden aşağıdaki komutları kullanarak gerekli paketleri yükleyebilirsiniz:

CODE
12composer require "grpc/grpc:^1.0"
composer require "google/protobuf:^3.0"


Ardından, gRPC hizmet tanımınızı oluşturmalısınız. Bunun için bir proto dosyası oluşturun. Örneğin, service.proto dosyasını aşağıdaki gibi tanımlayabilirsiniz:

CODE
12345678910111213syntax = "proto3";

service MyService {
    rpc GetData (DataRequest) returns (DataResponse);
}

message DataRequest {
    string id = 1;
}

message DataResponse {
    string data = 1;
}


Bu dosyayı derlemek için protoc komutunu kullanmalısınız. Aşağıdaki komut, PHP için gerekli kodu oluşturacaktır:

CODE
1protoc --proto_path=. --php_out=. --grpc_out=. --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin service.proto


Bu işlem, gRPC hizmetlerinizi PHP ile kullanmanıza olanak tanıyan sınıfları oluşturacaktır.

Hizmetinizi oluşturduktan sonra, bir sunucu ve istemci uygulaması yazmanız gerekiyor. Aşağıda basit bir sunucu örneği verilmiştir:

CODE
12345678910111213141516require 'vendor/autoload.php';
require 'service/MyServiceClient.php';
require 'service/MyService.php';

class MyServiceImpl extends MyService {
    public function GetData($request, $context) {
        $response = new DataResponse();
        $response->setData("Data for ID: " . $request->getId());
        return $response;
    }
}

$server = new \Grpc\RpcServer();
$server->addHttp2Port('0.0.0.0:50051');
$server->handle(new MyServiceImpl());
$server->run();


İstemci tarafında ise aşağıdaki gibi bir yapı kurabilirsiniz:

CODE
12345678910111213$client = new MyServiceClient('localhost:50051', [
    'credentials' => \Grpc\ChannelCredentials::createInsecure(),
]);

$request = new DataRequest();
$request->setId("123");
list($response, $status) = $client->GetData($request)->wait();

if ($status->code === Grpc\STATUS_OK) {
    echo $response->getData();
} else {
    echo "Error: " . $status->details;
}


Bu örnek, PHP ile gRPC kullanımının temelini oluşturmaktadır. gRPC'nin performans avantajları, özellikle yüksek verim ve düşük gecikme süreleri gerektiren uygulamalarda kendini göstermektedir. gRPC ile birlikte protobuf kullanmanın sağladığı veri serileştirme avantajları da önemli bir yere sahiptir. Bu nedenle, PHP projelerinizde gRPC kullanmayı düşünmek faydalı olabilir.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi