第三方系统调用text协议通信超时

// 建立socket连接到内部推送端口
$client = stream_socket_client('tcp://192.168.31.214:1230', $errno, $errmsg);
var_dump($errno, $errmsg);
// 推送的数据,包含uid字段,表示是给这个uid推送

$data = array('action'=>'sendToAll', 'info'=>'哈哈哈哈哈哈哈');
// $data = array('action'=>'editUser', 'info'=>'哈哈哈哈哈哈哈');

// 发送数据,注意5678端口是Text协议的端口,Text协议需要在数据末尾加上换行符
fwrite($client, json_encode($data)."\n");
// 读取推送结果
$res = fread($client, 8192);
fclose($client);
 
//群发消息
case 'sendToAll':
$user_id = isset($message['userId']) ? $message['userId'] : 0;
if (empty($user_id)) return self::format_return_message('error', '缺少参数');

Gateway::sendToAll(self::format_return_message('message', $message['info']));
break;
如上代码,如果去掉判断直接发送给客户端就正常,如果加了判断那就不行,一会儿就超时了,请问这是什么情况?
已邀请:

latin - 挨踢男

赞同来自: 追梦随想

这个很好理解吧,
// 读取推送结果
$res = fread($client, 8192);
客户端这边在等待服务端返回结果,然后服务端走到
if (empty($user_id)) return self::format_return_message('error', '缺少参数');
的时候,并没有给这个fread的客户端推送结果,那fread就一直等待了,就超时了。
 
 
 

要回复问题请先登录注册