请教个问题 fwrite($client, $data_string."\n"); // 读取推送结果 $resp = fread($client, 8192); fwrite 在服务端没接收到内容, fread也没接收到回应,这种情况会不会是阻塞造成的?
补充: 用的单进程,并且客户端设备大约在700左右
只有这两行客户端代码看不出什么问题的
// 建立socket连接到内部推送端口 $client = stream_socket_client($this->config, $errno, $errmsg, 5, STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT); if(!$client) { Helper::logger('Jpush_error.log', 'WMERR-->'."erreur : $errno - $errstr<br />n"); return false; } else { // 推送的数据,包含uid字段,表示是给这个uid推送 $data = 'push'; $data = $alias; $data_string = json_encode($data); // 发送数据,注意3212端口是Text协议的端口,Text协议需要在数据末尾加上换行符 //var_dump($data_string);exit; fwrite($client, $data_string."\n"); // 读取推送结果 $resp = fread($client, 8192); return self::handleResult(str_replace("\n", "", $resp),$data_string,"WM"); }
基本是取的demo里面的,稍微调整了一点点
另外,这里是不是设置成 socket_set_nonblock 会好些,不过想问下非阻塞情况下,fread也能获取到返回值吧?
上面的意思是说信息量太少了,只贴客户端代码无法定位是什么问题。
请描述下要做什么?期待结果以及实际结果(详细的说明)?客户端连接的端口是?以及服务端是否是workerman?如果是workerman的话对应的启动脚本代码是什么?以及业务处理逻辑是什么都要贴出来
补充:
用的单进程,并且客户端设备大约在700左右
只有这两行客户端代码看不出什么问题的
基本是取的demo里面的,稍微调整了一点点
另外,这里是不是设置成 socket_set_nonblock 会好些,不过想问下非阻塞情况下,fread也能获取到返回值吧?
上面的意思是说信息量太少了,只贴客户端代码无法定位是什么问题。
请描述下要做什么?期待结果以及实际结果(详细的说明)?客户端连接的端口是?以及服务端是否是workerman?如果是workerman的话对应的启动脚本代码是什么?以及业务处理逻辑是什么都要贴出来