首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
WARNING Server::check_worker_exit_status(): worker(pid=24, id=1) abnormal exit, status=255, signal=0
### 问题描述 使用swoft 的rpc服务。 客户端会隔一端时间 recv 超时 errCode=110 msg=Connection timed out interface 查看服务端日志发现 WARNING Server::check_worker_exit_status(): worker(pid=24, id=1) abnormal exit, status=255, signal=0 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole 4.8.3 PHP 7.2.34 (cli) (built: Dec 11 2020 10:44:02) ( NTS ) 阿里云 centos7 ### 相关代码 ```php 客服端 $connection = new Client(SWOOLE_SOCK_TCP); ... $result = $connection->recv(); $trace[] = microtime(true); if (empty($result)) { // Has been reconnected OR receive date timeout $errCode = $connection->getErrCode(); $errMsg = $connection->getErrMsg(); if ($reconnect || $errCode === SOCKET_ETIMEDOUT) { // fix: reusing use the connection will read old response data. if ($errCode === SOCKET_ETIMEDOUT) { $connection->reconnect(); } $message = sprintf($message, $errCode, $errMsg); throw new RpcClientException('recv:' . $message);//这里隔一端时间 recv 超时 } return $this->sendAndRecv($connection, $data, $message, true); } 服务端 public function start(): void { $this->swooleServer = new SwooleServer($this->host, $this->port, $this->mode, $this->type);//$this->type=tcp $this->startSwoole(); } /** * Bind swoole event and start swoole server * * @throws ServerException */ protected function startSwoole(): void { ... // Start swoole server $this->swooleServer->start(); } ``` ### 你期待的结果是什么?实际看到的错误信息又是什么?
发布于2年前 · 37 次浏览 · 来自
提问
zhoubin
### 问题描述 使用swoft 的rpc服务。 客户端会隔一端时间 recv 超时 errCode=110 msg=Connection timed out interface 查看服务端日志发现 WARNING Server::check_worker_exit_status(): worker(pid=24, id=1) abnormal exit, status=255, signal=0 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole 4.8.3 PHP 7.2.34 (cli) (built: Dec 11 2020 10:44:02) ( NTS ) 阿里云 centos7 ### 相关代码 ```php 客服端 $connection = new Client(SWOOLE_SOCK_TCP); ... $result = $connection->recv(); $trace[] = microtime(true); if (empty($result)) { // Has been reconnected OR receive date timeout $errCode = $connection->getErrCode(); $errMsg = $connection->getErrMsg(); if ($reconnect || $errCode === SOCKET_ETIMEDOUT) { // fix: reusing use the connection will read old response data. if ($errCode === SOCKET_ETIMEDOUT) { $connection->reconnect(); } $message = sprintf($message, $errCode, $errMsg); throw new RpcClientException('recv:' . $message);//这里隔一端时间 recv 超时 } return $this->sendAndRecv($connection, $data, $message, true); } 服务端 public function start(): void { $this->swooleServer = new SwooleServer($this->host, $this->port, $this->mode, $this->type);//$this->type=tcp $this->startSwoole(); } /** * Bind swoole event and start swoole server * * @throws ServerException */ protected function startSwoole(): void { ... // Start swoole server $this->swooleServer->start(); } ``` ### 你期待的结果是什么?实际看到的错误信息又是什么?
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
还没有评论!
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。