推送消息的坑,求解决

ppppp
$client = stream_socket_client('***', $errno, $errmsg, 1, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT);
// 推送的数据,包含uid字段,表示是给这个uid推送
$data = array('uid' => $uid, 'type'=>$type, 'result' => $data);
// 发送数据,注意5678端口是Text协议的端口,Text协议需要在数据末尾加上换行符
@fwrite($client, json_encode($data) . "\n");
$status = fread($client, 8192);

这是推送的代码。但是我打印服务端日志返回的值是200 或者其他值 但是fread 获取的值有时不准确,不是完全不准备,是偶尔,长时间不推消息。突然去推就会这样,推多几次就没问题了

2481 1 0
1个回答

智佳思远

| STREAM_CLIENT_PERSISTENT 删掉试下,这个坑我遇到过,STREAM_CLIENT_PERSISTENT是发起持久连接,也就是下次再发起连接的时候会复用这个连接,但是我测试有时候会有问题,我猜测是因为这个连接已经断开了,php没有检测到,使用的时候就不行了。STREAM_CLIENT_PERSISTENT 删掉就好了

  • ppppp 2018-11-02

    谢谢,应该是了,我还以为是fread这个函数的坑, 还专门换了哥函数

年代过于久远,无法发表回答
🔝