本文整理汇总了PHP中ZMQSocket::recvMulti方法的典型用法代码示例。如果您正苦于以下问题:PHP ZMQSocket::recvMulti方法的具体用法?PHP ZMQSocket::recvMulti怎么用?PHP ZMQSocket::recvMulti使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZMQSocket
的用法示例。
在下文中一共展示了ZMQSocket::recvMulti方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: request
/**
* @param string $request
*/
public function request($request)
{
// Prefix request with sequence number and empty envelope
$this->sequence++;
$msg = array('', $this->sequence, $request);
// Blast the request to all connected servers
for ($server = 1; $server <= $this->servers; $server++) {
$this->socket->sendMulti($msg);
}
// Wait for a matching reply to arrive from anywhere
// Since we can poll several times, calculate each one
$poll = new ZMQPoll();
$poll->add($this->socket, ZMQ::POLL_IN);
$reply = null;
$endtime = time() + self::GLOBAL_TIMEOUT / 1000;
while (time() < $endtime) {
$readable = $writable = array();
$events = $poll->poll($readable, $writable, ($endtime - time()) * 1000);
foreach ($readable as $sock) {
if ($sock == $this->socket) {
$reply = $this->socket->recvMulti();
if (count($reply) != 3) {
exit;
}
$sequence = $reply[1];
if ($sequence == $this->sequence) {
break;
}
}
}
}
return $reply;
}
示例2: receiveResponse
/**
* {@inheritDoc}
*/
public function receiveResponse()
{
try {
$result = $this->socket->recvMulti();
} catch (\ZMQSocketException $e) {
throw new TransportException('Cannot receive response', 0, $e);
}
if ($result === false) {
throw new TimeoutException('Timeout (' . $this->getTimeout() . 's) reached');
}
if (!isset($result[0])) {
throw new FormatException('Invalid response - no response type', $result);
}
if (!isset($result[1])) {
throw new FormatException('Invalid response - no headers', $result);
}
$response = new Response($result[0]);
$response->setHeaders(new Headers(Parser::parseHeaders($result[1])));
if (!MessageTypes::isResponseTypeWithResult($response->getType())) {
return $response;
}
if (!isset($result[2])) {
throw new FormatException('Invalid response - no response body', $result);
}
return $response->setResultBody($result[2]);
}