]> git.mxchange.org Git - friendica.git/blobdiff - include/queue.php
switch identities to manage pages
[friendica.git] / include / queue.php
index b7fb478b4e3aab2329c52a6d7148c5487b0431d0..d4fc7dbd6277d0aa0cebd7fe198fa5a2efdc0d54 100644 (file)
@@ -1,7 +1,7 @@
 <?php
+require_once("boot.php");
 
-
-function update_queue_item($id) {
+function update_queue_time($id) {
        logger('queue: requeue item ' . $id);
        q("UPDATE `queue` SET `last` = '%s' WHERE `id` = %d LIMIT 1",
                dbesc(datetime_convert()),
@@ -16,14 +16,19 @@ function remove_queue_item($id) {
        );
 }
 
-       require_once("boot.php");
-
-       $a = new App;
+function queue_run($argv, $argc){
+  global $a, $db;
 
-       @include(".htconfig.php");
-       require_once("dba.php");
-       $db = new dba($db_host, $db_user, $db_pass, $db_data);
-               unset($db_host, $db_user, $db_pass, $db_data);
+  if(is_null($a)){
+    $a = new App;
+  }
+  
+  if(is_null($db)){
+    @include(".htconfig.php");
+    require_once("dba.php");
+    $db = new dba($db_host, $db_user, $db_pass, $db_data);
+    unset($db_host, $db_user, $db_pass, $db_data);
+  };
 
 
        require_once("session.php");
@@ -33,6 +38,9 @@ function remove_queue_item($id) {
 
        $a->set_baseurl(get_config('system','url'));
 
+       $deadguys = array();
+
+       logger('queue: start');
 
        $r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue` 
                LEFT JOIN `contact` ON `queue`.`cid` = `contact`.`id` 
@@ -45,11 +53,11 @@ function remove_queue_item($id) {
                q("DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
        }
                
-       $r = q("SELECT `id` FROM `queue` WHERE 1 ");
-
-       if(! count($r))
-               killme();
+       $r = q("SELECT `id` FROM `queue` WHERE `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ");
 
+       if(! count($r)){
+               return;
+       }
        // delivery loop
 
        require_once('include/salmon.php');
@@ -62,12 +70,18 @@ function remove_queue_item($id) {
                        continue;
 
                $c = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
-                       intval($q_item['cid'])
+                       intval($qi[0]['cid'])
                );
                if(! count($c)) {
                        remove_queue_item($q_item['id']);
                        continue;
                }
+               if(in_array($c[0]['notify'],$deadguys)) {
+                               logger('queue: skipping known dead url: ' . $c[0]['notify']);
+                               update_queue_time($q_item['id']);
+                               continue;
+               }
+
                $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
                        intval($c[0]['uid'])
                );
@@ -87,11 +101,13 @@ function remove_queue_item($id) {
                                logger('queue: dfrndelivery: item ' . $q_item['id'] . ' for ' . $contact['name']);
                                $deliver_status = dfrn_deliver($owner,$contact,$data);
 
-                               if($deliver_status == (-1))
+                               if($deliver_status == (-1)) {
                                        update_queue_time($q_item['id']);
-                               else
+                                       $deadguys[] = $contact['notify'];
+                               }
+                               else {
                                        remove_queue_item($q_item['id']);
-
+                               }
                                break;
                        default:
                                if($contact['notify']) {
@@ -107,7 +123,11 @@ function remove_queue_item($id) {
                }
        }
                
-       killme();
+       return;
 
-       // NOTREACHED
+}
 
+if (array_search(__file__,get_included_files())===0){
+  queue_run($argv,$argc);
+  killme();
+}