ZMQPoll::poll

(PECL zmq >= 0.5.0)

ZMQPoll::pollPoll the items

Description

publicZMQPoll::poll(array&$readable, array&$writable, int$timeout = -1): int

Polls the items in the current poll set. The readable and writable items are returned in the readable and writable parameters. ZMQPoll::getLastErrors() can be used to check if there were errors.

Parameters

readable

Array where readable ZMQSockets/PHP streams are returned. The array will be cleared at the beginning of the operation.

writable

Array where writable ZMQSockets/PHP streams are returned. The array will be cleared at the beginning of the operation.

timeout

Timeout for the operation. -1 means that poll waits until at least one item has activity. Please note that starting from version 1.0.0 the poll timeout is defined in milliseconds, rather than microseconds.

Return Values

Returns an integer representing the amount of items with activity.

Errors/Exceptions

Throws ZMQPollException on error.

Examples

Example #1 A ZMQPoll() example

Create a simple poll server

<?php


$context = new ZMQContext();
$server = $context->getSocket(ZMQ::SOCKET_REP);


$server->bind("tcp://127.0.0.1:5555");


$poll = new ZMQPoll();


$id = $poll->add($server, ZMQ::POLL_IN | ZMQ::POLL_OUT);
echo
"Added object with id " . $id . "\n";


$readable = array();
$writable = array();

while (
true) {

$events = 0;

try {

$events = $poll->poll($readable, $writable, -1);
$errors = $poll->getLastErrors();

if (
count($errors) > 0) {
foreach (
$errors as $error) {
echo
"Error polling object " . $error . "\n";
}
}
} catch (
ZMQPollException $e) {
echo
"poll failed: " . $e->getMessage() . "\n";
}

if (
$events > 0) {

foreach ($readable as $r) {
try {
echo
"Received message: " . $r->recv() . "\n";
} catch (
ZMQException $e) {
echo
"recv failed: " . $e->getMessage() . "\n";
}
}


foreach ($writable as $w) {
try {
$w->send("Got it!");
} catch (
ZMQException $e) {
echo
"send failed: " . $e->getMessage() . "\n";
}
}
}
}
?>
To Top