summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-08-30 05:57:09 -0400
committerEvan Prodromou <evan@prodromou.name>2008-08-30 05:57:09 -0400
commit0217a74f130ee8075537a4f1316f554c25d51fe2 (patch)
treeb94061ba4973cacaa68636e4d60c04b1e8d82d34
parentc46f152697b7abfe6a33bec38c6b793e288d85c8 (diff)
check the state of the queue before diving in to process it
darcs-hash:20080830095709-84dde-a64262c1b32e506cb2c43f8b4fb55ab88effc22f.gz
-rw-r--r--extlib/XMPPHP/XMLStream.php8
-rwxr-xr-xscripts/xmppqueuehandler.php10
2 files changed, 16 insertions, 2 deletions
diff --git a/extlib/XMPPHP/XMLStream.php b/extlib/XMPPHP/XMLStream.php
index 4de23ef7f..62aa4de89 100644
--- a/extlib/XMPPHP/XMLStream.php
+++ b/extlib/XMPPHP/XMLStream.php
@@ -616,4 +616,12 @@ class XMPPHP_XMLStream {
xml_set_element_handler($this->parser, 'startXML', 'endXML');
xml_set_character_data_handler($this->parser, 'charXML');
}
+
+ public function readyToProcess() {
+ $read = array($this->socket);
+ $write = null;
+ $except = null;
+ $updated = @stream_select($read, $write, $except, 0);
+ return $updated !== false;
+ }
}
diff --git a/scripts/xmppqueuehandler.php b/scripts/xmppqueuehandler.php
index 040191c28..52db0eb59 100755
--- a/scripts/xmppqueuehandler.php
+++ b/scripts/xmppqueuehandler.php
@@ -53,9 +53,15 @@ class XmppQueueHandler extends QueueHandler {
}
function idle() {
- $this->log(LOG_DEBUG, 'Processing the incoming message queue.');
+ $this->log(LOG_DEBUG, 'Checking the incoming message queue.');
# Process the queue for a second
- $this->conn->processTime(1);
+ if ($this->conn->readyToProcess()) {
+ $this->log(LOG_DEBUG, 'Something in the incoming message queue; processing it.');
+ $this->conn->processTime(1);
+ $this->log(LOG_DEBUG, 'Done processing incoming message queue.');
+ } else {
+ $this->log(LOG_DEBUG, 'Nothing in the incoming message queue; skipping it.');
+ }
}
function finish() {