a little more error-checking in the queuedaemon
darcs-hash:20080705002207-84dde-c5bc4da7dbca8a32ea4126badb772e99bd4f8bf1.gz
This commit is contained in:
parent
84b1f41279
commit
25e93288ba
|
@ -132,10 +132,18 @@ function jabber_broadcast_notice($notice) {
|
||||||
while ($sub->fetch()) {
|
while ($sub->fetch()) {
|
||||||
$user = User::staticGet($sub->subscriber);
|
$user = User::staticGet($sub->subscriber);
|
||||||
if ($user && $user->jabber && $user->jabbernotify) {
|
if ($user && $user->jabber && $user->jabbernotify) {
|
||||||
jabber_send_message($user->jabber, $msg);
|
common_log(LOG_INFO,
|
||||||
|
'Sending notice ' . $notice->id . ' to ' . $user->jabber,
|
||||||
|
__FILE__);
|
||||||
|
$success = jabber_send_message($user->jabber, $msg);
|
||||||
|
if (!$success) {
|
||||||
|
# XXX: Not sure, but I think that's the right thing to do
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function jabber_format_notice(&$profile, &$notice) {
|
function jabber_format_notice(&$profile, &$notice) {
|
||||||
|
|
18
lib/util.php
18
lib/util.php
|
@ -810,9 +810,9 @@ function common_redirect($url, $code=307) {
|
||||||
function common_broadcast_notice($notice, $remote=false) {
|
function common_broadcast_notice($notice, $remote=false) {
|
||||||
if (common_config('queue', 'enabled')) {
|
if (common_config('queue', 'enabled')) {
|
||||||
# Do it later!
|
# Do it later!
|
||||||
common_enqueue_notice($notice);
|
return common_enqueue_notice($notice);
|
||||||
} else {
|
} else {
|
||||||
common_real_broadcast($notice, $remote);
|
return common_real_broadcast($notice, $remote);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -827,24 +827,26 @@ function common_enqueue_notice($notice) {
|
||||||
if ($result === FALSE) {
|
if ($result === FALSE) {
|
||||||
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
|
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
|
||||||
common_log(LOG_ERROR, 'DB error inserting queue item: ' . $last_error->message);
|
common_log(LOG_ERROR, 'DB error inserting queue item: ' . $last_error->message);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
common_log(LOG_INFO, 'complete queueing notice ID = ' . $notice->id);
|
common_log(LOG_INFO, 'complete queueing notice ID = ' . $notice->id);
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_real_broadcast($notice, $remote=false) {
|
function common_real_broadcast($notice, $remote=false) {
|
||||||
// XXX: optionally use a queue system like http://code.google.com/p/microapps/wiki/NQDQ
|
$success = true;
|
||||||
if (!$remote) {
|
if (!$remote) {
|
||||||
# Make sure we have the OMB stuff
|
# Make sure we have the OMB stuff
|
||||||
require_once(INSTALLDIR.'/lib/omb.php');
|
require_once(INSTALLDIR.'/lib/omb.php');
|
||||||
omb_broadcast_remote_subscribers($notice);
|
$success = omb_broadcast_remote_subscribers($notice);
|
||||||
|
}
|
||||||
|
if ($success) {
|
||||||
|
require_once(INSTALLDIR.'/lib/jabber.php');
|
||||||
|
$success = jabber_broadcast_notice($notice);
|
||||||
}
|
}
|
||||||
require_once(INSTALLDIR.'/lib/jabber.php');
|
|
||||||
jabber_broadcast_notice($notice);
|
|
||||||
// XXX: broadcast notices to SMS
|
// XXX: broadcast notices to SMS
|
||||||
// XXX: broadcast notices to other IM
|
// XXX: broadcast notices to other IM
|
||||||
return true;
|
return $success;
|
||||||
}
|
}
|
||||||
|
|
||||||
function common_broadcast_profile($profile) {
|
function common_broadcast_profile($profile) {
|
||||||
|
|
|
@ -96,7 +96,15 @@ do {
|
||||||
if ($notice) {
|
if ($notice) {
|
||||||
qd_log(LOG_INFO, 'broadcasting notice ID = ' . $notice->id);
|
qd_log(LOG_INFO, 'broadcasting notice ID = ' . $notice->id);
|
||||||
# XXX: what to do if broadcast fails?
|
# XXX: what to do if broadcast fails?
|
||||||
common_real_broadcast($notice, qd_is_remote($notice));
|
$result = common_real_broadcast($notice, qd_is_remote($notice));
|
||||||
|
if (!$result) {
|
||||||
|
qd_log(LOG_WARNING, 'Failed broadcast for notice ID = ' . $notice->id);
|
||||||
|
$orig = $qi;
|
||||||
|
$qi->claimed = NULL;
|
||||||
|
$qi->update($orig);
|
||||||
|
qd_log(LOG_WARNING, 'Abandoned claim for notice ID = ' . $notice->id);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
qd_log(LOG_INFO, 'finished broadcasting notice ID = ' . $notice->id);
|
qd_log(LOG_INFO, 'finished broadcasting notice ID = ' . $notice->id);
|
||||||
$notice = NULL;
|
$notice = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -105,7 +113,7 @@ do {
|
||||||
$qi->delete();
|
$qi->delete();
|
||||||
$qi = NULL;
|
$qi = NULL;
|
||||||
} else {
|
} else {
|
||||||
# qd_clear_old_claims();
|
qd_clear_old_claims();
|
||||||
# In busy times, sleep less
|
# In busy times, sleep less
|
||||||
$sleeptime = 30000000/($in_a_row+1);
|
$sleeptime = 30000000/($in_a_row+1);
|
||||||
qd_log(LOG_INFO, 'sleeping ' . $sleeptime . ' microseconds');
|
qd_log(LOG_INFO, 'sleeping ' . $sleeptime . ' microseconds');
|
||||||
|
|
Loading…
Reference in New Issue
Block a user