/** * @param ZMQContext $ctx * @param string $endpoint * @param string $request */ function try_request($ctx, $endpoint, $request) { global $request_timeout; printf("I: Trying echo service at %s...\n", $endpoint); $client = $ctx->getSocket(ZMQ::SOCKET_REQ); $client->connect($endpoint); $client->send($request); $poll = new ZMQPoll(); $poll->add($client, ZMQ::POLL_IN); $readable = $writable = array(); $events = $poll->poll($readable, $writable, $request_timeout); $reply = null; foreach ($readable as $sock) { if ($sock == $client) { $reply = $client->recvMulti(); } else { $reply = null; } } $poll->remove($client); $poll = null; $client = null; return $reply; }