@ -45,55 +45,57 @@ function queue_run(&$argv, &$argc){
$deadservers = array ();
$serverlist = array ();
logger ( 'queue: start' );
if ( ! $queue_id ) {
// Handling the pubsubhubbub requests
proc_run ( PRIORITY_HIGH , 'include/pubsubpublish.php' );
logger ( 'queue: start' );
$interval = (( get_config ( 'system' , 'delivery_interval' ) === false ) ? 2 : intval ( get_config ( 'system' , 'delivery_interval' )));
// Handling the pubsubhubbub requests
proc_run ( PRIORITY_HIGH , 'include/pubsubpublish.php' );
// If we are using the worker we don't need a delivery interval
if ( get_config ( " system " , " worker " ))
$interval = false ;
$interval = (( get_config ( 'system' , 'delivery_interval' ) === false ) ? 2 : intval ( get_config ( 'system' , 'delivery_interval' )));
$r = q ( " select * from deliverq where 1 " );
if ( $r ) {
foreach ( $r as $rr ) {
logger ( 'queue: deliverq' );
proc_run ( PRIORITY_HIGH , 'include/delivery.php' , $rr [ 'cmd' ], $rr [ 'item' ], $rr [ 'contact' ]);
if ( $interval )
// If we are using the worker we don't need a delivery interval
if ( get_config ( " system " , " worker " ))
$interval = false ;
$r = q ( " select * from deliverq where 1 " );
if ( $r ) {
foreach ( $r as $rr ) {
logger ( 'queue: deliverq' );
proc_run ( PRIORITY_HIGH , 'include/delivery.php' , $rr [ 'cmd' ], $rr [ 'item' ], $rr [ 'contact' ]);
if ( $interval )
@ time_sleep_until ( microtime ( true ) + ( float ) $interval );
}
}
}
$r = q ( " SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue`
INNER JOIN `contact` ON `queue` . `cid` = `contact` . `id`
WHERE `queue` . `created` < UTC_TIMESTAMP () - INTERVAL 3 DAY " );
if ( $r ) {
foreach ( $r as $rr ) {
logger ( 'Removing expired queue item for ' . $rr [ 'name' ] . ', uid=' . $rr [ 'uid' ]);
logger ( 'Expired queue data :' . $rr [ 'content' ], LOGGER_DATA );
$r = q ( " SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue`
INNER JOIN `contact` ON `queue` . `cid` = `contact` . `id`
WHERE `queue` . `created` < UTC_TIMESTAMP () - INTERVAL 3 DAY " );
if ( $r ) {
foreach ( $r as $rr ) {
logger ( 'Removing expired queue item for ' . $rr [ 'name' ] . ', uid=' . $rr [ 'uid' ]);
logger ( 'Expired queue data :' . $rr [ 'content' ], LOGGER_DATA );
}
q ( " DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY " );
}
q ( " DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY " );
}
if ( $queue_id ) {
$r = q ( " SELECT `id` FROM `queue` WHERE `id` = %d LIMIT 1 " ,
intval ( $queue_id )
);
}
else {
// For the first 12 hours we'll try to deliver every 15 minutes
// After that, we'll only attempt delivery once per hour.
$r = q ( " SELECT `id` FROM `queue` WHERE ((`created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR && `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE) OR (`last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR)) ORDER BY `cid`, `created` " );
} else {
logger ( 'queue: start for id ' . $queue_id );
$r = q ( " SELECT `id` FROM `queue` WHERE `id` = %d LIMIT 1 " ,
intval ( $queue_id )
);
}
if ( ! $r ){
if ( ! $r ){
return ;
}
if ( ! $queue_id )
if ( ! $queue_id )
call_hooks ( 'queue_predeliver' , $a , $r );
@ -107,16 +109,17 @@ function queue_run(&$argv, &$argc){
// queue_predeliver hooks may have changed the queue db details,
// so check again if this entry still needs processing
if ( $queue_id ) {
if ( $queue_id )
$qi = q ( " SELECT * FROM `queue` WHERE `id` = %d LIMIT 1 " ,
intval ( $queue_id )
);
}
else {
intval ( $queue_id ));
elseif ( get_config ( " system " , " worker " )) {
logger ( 'Call queue for id ' . $q_item [ 'id' ]);
proc_run ( PRIORITY_LOW , " include/queue.php " , $q_item [ 'id' ]);
continue ;
} else
$qi = q ( " SELECT * FROM `queue` WHERE `id` = %d AND `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE " ,
intval ( $q_item [ 'id' ])
);
}
intval ( $q_item [ 'id' ]));
if ( ! count ( $qi ))
continue ;