首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
swoole $res = $client->recv(); 返回false
### 问题描述 我用swoole做推送,但每次我重启服务的时候第一次推送都会报 send recv res: false failed err code: 11 我用swool的来做推送: 情况1:每次我重启服务的时候第一次推送都会报 $res = $client->recv();就会报错$client->errCode = 11(资源不可用) 情况2:进程一直在跑。比如如果很久没有推送任务。然后来了一条推送,这行代码$res = $client->recv()就会报错$client->errCode = 11(资源不可用)。然后继续在推送一条就又可以了。不知道是怎么回事?这个问题困扰我很久了 ### Swoole版本,PHP版本,以及操作系统版本信息 SWOOLE Version 4.2.12 PHP Version 7.2.13 ### 相关代码 ```php 请将代码粘贴至此处(请勿用截图) ``` $client = new \Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_ASYNC); $host = isset($config->client_host)?$config->client_host:$config->host; if (!$client->connect($host, $config->port, $config->timeout)) { // 这里连接成功 $output = [ 'data' => var_export($data, true), 'errCode' => $client->errCode, 'msg' => 'connect service failed.', ]; log::error(__METHOD__, ['input' => $config, 'output' => $output]); return; } log::info( __FUNCTION__, "connect2 swoole server {$config->host} {$config->port} timeout {$config->timeout} success . " . PHP_EOL ); $req = json_encode($data); log::info( __FUNCTION__,['send_data' => json_encode($data,256)] ); $send = $client->send($req); //这里发送也正常 非false log::info( __FUNCTION__,['send_result' => json_encode($send,256)] ); if (!$send) { log::error( __FUNCTION__, sprintf('send req: %s failed. ' . PHP_EOL, var_export($req, true)) ); return false; } $res = $client->recv(); //这里返回false log::info('error_errMsg',['input'=>$client->errMsg]); //这里的 $client->errMsg 是 null (error_errMsg|{"input":null}) if (!$res) { log::error( //这里的错误日志报:send recv res: false failed err code: 11 __FUNCTION__, sprintf('data %s send recv res: %s failed err code: %s. ' . PHP_EOL, var_export($data, true), var_export($res, true), var_export($client->errCode, true)) ); //$client->close(); return false; } ### 你期待的结果是什么?实际看到的错误信息又是什么? 我希望不要报资源不可用。看到的错误信息在问题描述里
发布于4年前 · 0 次浏览 · 来自
提问
mick.lei
### 问题描述 我用swoole做推送,但每次我重启服务的时候第一次推送都会报 send recv res: false failed err code: 11 我用swool的来做推送: 情况1:每次我重启服务的时候第一次推送都会报 $res = $client->recv();就会报错$client->errCode = 11(资源不可用) 情况2:进程一直在跑。比如如果很久没有推送任务。然后来了一条推送,这行代码$res = $client->recv()就会报错$client->errCode = 11(资源不可用)。然后继续在推送一条就又可以了。不知道是怎么回事?这个问题困扰我很久了 ### Swoole版本,PHP版本,以及操作系统版本信息 SWOOLE Version 4.2.12 PHP Version 7.2.13 ### 相关代码 ```php 请将代码粘贴至此处(请勿用截图) ``` $client = new \Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_ASYNC); $host = isset($config->client_host)?$config->client_host:$config->host; if (!$client->connect($host, $config->port, $config->timeout)) { // 这里连接成功 $output = [ 'data' => var_export($data, true), 'errCode' => $client->errCode, 'msg' => 'connect service failed.', ]; log::error(__METHOD__, ['input' => $config, 'output' => $output]); return; } log::info( __FUNCTION__, "connect2 swoole server {$config->host} {$config->port} timeout {$config->timeout} success . " . PHP_EOL ); $req = json_encode($data); log::info( __FUNCTION__,['send_data' => json_encode($data,256)] ); $send = $client->send($req); //这里发送也正常 非false log::info( __FUNCTION__,['send_result' => json_encode($send,256)] ); if (!$send) { log::error( __FUNCTION__, sprintf('send req: %s failed. ' . PHP_EOL, var_export($req, true)) ); return false; } $res = $client->recv(); //这里返回false log::info('error_errMsg',['input'=>$client->errMsg]); //这里的 $client->errMsg 是 null (error_errMsg|{"input":null}) if (!$res) { log::error( //这里的错误日志报:send recv res: false failed err code: 11 __FUNCTION__, sprintf('data %s send recv res: %s failed err code: %s. ' . PHP_EOL, var_export($data, true), var_export($res, true), var_export($client->errCode, true)) ); //$client->close(); return false; } ### 你期待的结果是什么?实际看到的错误信息又是什么? 我希望不要报资源不可用。看到的错误信息在问题描述里
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2020-09-15
鲁飞
先升级Swoole版本以后重试
赞
0
回复
微信公众号
热门内容
作者其它话题
- swoole返回 send recv res: false failed err code: 11
暂无回复的问答
- 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一直是同一个。没用使用到多进程啊。