請(qǐng)教個(gè)問(wèn)題
fwrite($client, $data_string."\n");
// 讀取推送結(jié)果
$resp = fread($client, 8192);
fwrite 在服務(wù)端沒(méi)接收到內(nèi)容, fread也沒(méi)接收到回應(yīng),這種情況會(huì)不會(huì)是阻塞造成的?
// 建立socket連接到內(nèi)部推送端口
$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 {
// 推送的數(shù)據(jù),包含uid字段,表示是給這個(gè)uid推送
$data = 'push';
$data = $alias;
$data_string = json_encode($data);
// 發(fā)送數(shù)據(jù),注意3212端口是Text協(xié)議的端口,Text協(xié)議需要在數(shù)據(jù)末尾加上換行符
//var_dump($data_string);exit;
fwrite($client, $data_string."\n");
// 讀取推送結(jié)果
$resp = fread($client, 8192);
return self::handleResult(str_replace("\n", "", $resp),$data_string,"WM");
}
基本是取的demo里面的,稍微調(diào)整了一點(diǎn)點(diǎn)
另外,這里是不是設(shè)置成 socket_set_nonblock 會(huì)好些,不過(guò)想問(wèn)下非阻塞情況下,fread也能獲取到返回值吧?