]> git.mxchange.org Git - friendica.git/blobdiff - include/pubsubpublish.php
Automatically refresh after two minutes when system is overloaded
[friendica.git] / include / pubsubpublish.php
index bc81fd78680c16cf0b429abeb557aa6b59727c87..625eefc261b69af08b4011d44265ffd1ddb61a1f 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 require_once("boot.php");
+require_once("include/ostatus.php");
 
 function handle_pubsubhubbub() {
        global $a, $db;
@@ -12,17 +13,19 @@ function handle_pubsubhubbub() {
        $r = q("SELECT * FROM `push_subscriber` WHERE `push` > 0");
 
        foreach($r as $rr) {
-               $params = get_feed_for($a, '', $rr['nickname'], $rr['last_update'], 0, true);
+
+               logger("Generate feed for user ".$rr['nickname']." - last updated ".$rr['last_update'], LOGGER_DEBUG);
+
+               $params = ostatus::feed($a, $rr['nickname'], $rr['last_update']);
                $hmac_sig = hash_hmac("sha1", $params, $rr['secret']);
 
                $headers = array("Content-type: application/atom+xml",
-                                               sprintf("Link: <%s>;rel=hub," .
-                                                               "<%s>;rel=self",
-                                                               $a->get_baseurl() . '/pubsubhubbub',
-                                                               $rr['topic']),
-                                               "X-Hub-Signature: sha1=" . $hmac_sig);
+                               sprintf("Link: <%s>;rel=hub,<%s>;rel=self",
+                                       $a->get_baseurl().'/pubsubhubbub',
+                                       $rr['topic']),
+                               "X-Hub-Signature: sha1=".$hmac_sig);
 
-               logger('POST '. print_r($headers, true)."\n".$params, LOGGER_DEBUG);
+               logger('POST '.print_r($headers, true)."\n".$params, LOGGER_DEBUG);
 
                post_url($rr['callback_url'], $params, $headers);
                $ret = $a->get_curl_code();
@@ -71,25 +74,14 @@ function pubsubpublish_run(&$argv, &$argc){
        };
 
        require_once('include/items.php');
-       require_once('include/pidfile.php');
 
        load_config('config');
        load_config('system');
 
-       $lockpath = get_lockpath();
-       if ($lockpath != '') {
-               $pidfile = new pidfile($lockpath, 'pubsubpublish');
-               if($pidfile->is_already_running()) {
-                       logger("Already running");
-                       if ($pidfile->running_time() > 9*60) {
-                               $pidfile->kill();
-                               logger("killed stale process");
-                               // Calling a new instance
-                               proc_run('php',"include/pubsubpublish.php");
-                       }
+       // Don't check this stuff if the function is called by the poller
+       if (App::callstack() != "poller_run")
+               if (App::is_already_running("pubsubpublish", "include/pubsubpublish.php", 540))
                        return;
-               }
-       }
 
        $a->set_baseurl(get_config('system','url'));