来自PHP CLI的gRPC调用被卡住

来自PHP CLI的gRPC调用被卡住,php,grpc,Php,Grpc,我正在尝试从PHP向运行Java的服务器调用gRPC。当我使用简单的HTTP请求时,我可以成功地接收响应。但当我使用tinker控制台打电话时,它会一直等待。没有指示超时的错误,没有。我在nginxwebserver中使用phpfpm7.4。我为gRPC和protobuf修改了/etc/php/7.4/cli/php.ini和/etc/php/7.4/fpm/php.ini 下面是一个示例代码块: <?php // ... $client = new CameraManagerServ

我正在尝试从PHP向运行Java的服务器调用gRPC。当我使用简单的HTTP请求时,我可以成功地接收响应。但当我使用tinker控制台打电话时,它会一直等待。没有指示超时的错误,没有。我在nginxwebserver中使用phpfpm7.4。我为gRPC和protobuf修改了/etc/php/7.4/cli/php.ini和/etc/php/7.4/fpm/php.ini

下面是一个示例代码块:

<?php

// ...

$client = new CameraManagerServiceClient('localhost:16000', [
    'credentials' => \Grpc\ChannelCredentials::createInsecure()
]);

$request = new Com\Example\Grpc\Camera;
$request->setId(2);

list($response, $status) = $client->DeleteCamera($request)->wait(); // Stuck at this line.

// ...

“当我使用tinker控制台打电话时,它会永远等待”——这很可能就是原因。我会提交一份错误报告。如果你真的想在这里提问,你必须提取一个。原因是,原因显然不在您发布的代码中,而是在它运行的环境中,需要隔离。是的,这意味着从tinker控制台提取相关代码。顺便说一句:用调试器一步一步地完成这项工作,以找出它在什么地方出现了与预期不同的变化。@emre-turan我有一个类似的问题(PHP永远卡住了)。我通过取消安装GRPC的二进制库来解决这个问题:
apt remove php7.4-GRPC
,并依靠PHP实现。@IvanButtinoni我使用pecl安装了GRPC,我注意到当我使用artisan命令调用时,它工作正常。但如果是artisan控制台,它就卡住了。@emre turan我的情况完全不同。我通过Php谷歌客户端使用grpc。安装ext grpc(即.so库)后,调用被卡住。但是gRPC仅在php实现中可用。我建议您禁用.so库,然后尝试仅使用php的实现,并检查是否有任何更改。