diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-08-27 10:23:36 -0400 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-08-27 10:23:36 -0400 |
commit | f3dc863d8fd7ad7da3a8539dabb5b8d5ba5e84b4 (patch) | |
tree | 2e0c717cf55598d6d0f3d3d9006d1335d26ffcd6 | |
parent | 9bdc7f8ec7abb53990b9360ccbdf5d38915c26de (diff) |
don't do too many broadcasts or confirms before checking the message queue
darcs-hash:20080827142336-84dde-2bec2149d86900fd0291f8c00f85aa756842bbe1.gz
-rwxr-xr-x | scripts/xmppdaemon.php | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/scripts/xmppdaemon.php b/scripts/xmppdaemon.php index 8b5c727b6..da1638011 100755 --- a/scripts/xmppdaemon.php +++ b/scripts/xmppdaemon.php @@ -53,6 +53,9 @@ define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); define('LACONICA', true); define('CLAIM_TIMEOUT', 100000); +define('MAX_BROADCAST_COUNT', 20); +define('MAX_CONFIRM_COUNT', 20); + require_once(INSTALLDIR . '/lib/common.php'); require_once(INSTALLDIR . '/lib/jabber.php'); @@ -101,7 +104,7 @@ class XMPPDaemon { $this->conn->addEventHandler('session_start', 'handle_session_start', $this); while(!$this->conn->isDisconnected()) { - $this->conn->processTime(10); + $this->conn->processTime(5); $this->broadcast_queue(); $this->confirmation_queue(); } @@ -339,6 +342,7 @@ class XMPPDaemon { function broadcast_queue() { $this->clear_old_claims(); $this->log(LOG_INFO, 'checking for queued notices'); + $cnt = 0; do { $qi = $this->top_queue_item(); if ($qi) { @@ -362,8 +366,9 @@ class XMPPDaemon { $this->log(LOG_WARNING, 'queue item for notice that does not exist'); } $qi->delete(); + $cnt++; } - } while ($qi); + } while ($qi && $cnt < MAX_BROADCAST_COUNT); } function clear_old_claims() { @@ -381,6 +386,7 @@ class XMPPDaemon { function confirmation_queue() { # $this->clear_old_confirm_claims(); $this->log(LOG_INFO, 'checking for queued confirmations'); + $cnt = 0; do { $confirm = $this->next_confirm(); if ($confirm) { @@ -409,8 +415,9 @@ class XMPPDaemon { continue; } } + $cnt++; } - } while ($confirm); + } while ($confirm && $cnt < MAX_CONFIRM_COUNT); } function next_confirm() { |