PHP gRPC保活参数配置后未被识别,求问题排查指导
问题排查与解决方案
核心原因推测
你添加的三个gRPC保活参数并非PHP gRPC扩展的.ini配置项,而是gRPC客户端的通道运行时参数,无法通过php.ini文件全局配置——这是参数未出现在php -i输出中的主要原因。
具体排查与解决步骤
确认配置文件是否被加载
执行以下命令,检查目标配置文件是否被PHP CLI正确读取:php -i | grep -E "(Loaded Configuration File|Additional .ini files parsed)"若输出中没有你修改的四个.ini文件,说明PHP未加载这些文件,需检查文件路径权限、PHP配置目录扫描规则(可通过
php -i | grep "Scan this dir for additional .ini files"确认扫描目录)。验证Docker配置持久化
进入Docker容器,直接查看配置文件内容,确认你添加的参数是否存在:docker exec -it <容器名> cat /etc/php/8.1/cli/conf.d/20-grpc.ini若参数消失,说明容器重启时配置文件被覆盖(比如使用了未持久化的目录、镜像启动脚本重写配置),需调整Docker挂载策略或修改镜像构建脚本。
正确设置gRPC保活参数
保活参数需在代码中通过gRPC客户端通道选项设置,而非全局.ini配置。示例代码如下:// 创建gRPC通道时传入保活参数 $channelOptions = [ 'grpc.keepalive_time_ms' => 7200000, 'grpc.keepalive_timeout_ms' => 200000, 'grpc.keepalive_permit_without_calls' => 1 ]; $channel = new Grpc\Channel('your-service:port', $channelOptions); // 或在客户端Stub初始化时传入 $client = new YourServiceClient('your-service:port', $channelOptions);确认PHP gRPC扩展支持的.ini参数
php -i | grep grpc输出的参数列表,即为当前版本PHP gRPC扩展支持的全部.ini配置项,保活参数不在此列(无论1.45.0还是1.59.1版本)。
内容的提问来源于stack exchange,提问作者Nebster
相关产品推荐
相关产品推荐

