laravel-s
laravel-s copied to clipboard
以swoole方式运行时,在controller中使用grpc客户端调用,会产生阻塞。无返回也不报错。而php-fpm和cli跑grpc的客户端时没有问题
-
Your software version (Screenshot of your startup)
Software Version PHP 7.4 Swoole 4.5.1 Laravel/Lumen 6.2.0 -
Detail description about this issue(error/log)
以swoole方式运行时,在controller中使用grpc客户端调用,会产生阻塞。无返回也不报错。而php-fpm和cli跑grpc的客户端时没有问题 -
Some
reproduciblecode blocks andsteps// TODO: your code
请提供示例代码。
试试 ini 里打开 grpc.enable_fork_support
https://github.com/grpc/grpc/issues/13412
试试 ini 里打开 grpc.enable_fork_support
打开后,就报错误了 [2020-08-14 10:35:17] [ERROR] worker[9] error: exitCode=0, signal=11
请问您是怎么解决的呢,我也和你遇到了同样的问题
用的这个composer 包 googleads/google-ads-php、遇到了调用goole rpc服务器、会产生阻塞。无返回也不报错。而php-fpm和cli跑grpc的客户端时没有问题
多半是grpc扩展与swoole不兼容,两个相似的问题:
Swoole #3129
Swoole #3198
@hhxsv5 @Yii18 同样的场景,试试在php.ini中增加这个 grpc.enable_fork_support = 1 grpc.poll_strategy = epoll1
echo "grpc.enable_fork_support = 1" >> /etc/php/7.4/cli/php.ini && echo "grpc.poll_strategy = epoll1" >> /etc/php/7.4/cli/php.ini
另一个问题,最新版laravels的使用cleaner不生效 使用3.7.17是正常的[狗头保命]。
@corlonmimo 我的解决方式是 WorkerStartEvent的时候
php.ini 里面不写 extension=grpc.so
if (!extension_loaded('grpc')) { dl('grpc.so'); }
遇到的两个问题,worker卡住不响应,退出时产生dump;进行下面调整后,暂时能跑:
更新grpc版本1.38+
ini中添加`grpc.enable_fork_support = 1`
禁用cli模式下的Opcache`opcache.enable_cli=0`