diff --git a/src/Model/PushSubscriber.php b/src/Model/PushSubscriber.php new file mode 100644 index 0000000000..2794a0b612 --- /dev/null +++ b/src/Model/PushSubscriber.php @@ -0,0 +1,30 @@ + 0, + // i.e. there has been an update (set in notifier.php). + $subscribers = dba::select('push_subscriber', ['id', 'callback_url'], ["`push` > 0 AND `next_try` < UTC_TIMESTAMP()"]); + + while ($subscriber = dba::fetch($subscribers)) { + logger("Publish feed to " . $subscriber["callback_url"], LOGGER_DEBUG); + Worker::add($priority, 'PubSubPublish', (int)$subscriber["id"]); + } + + dba::close($subscribers); + } +} diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index f8b37c2f90..f7b7aeae14 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -11,6 +11,7 @@ use Friendica\Database\DBM; use Friendica\Model\Contact; use Friendica\Model\Group; use Friendica\Model\User; +use Friendica\Model\PushSubscriber; use Friendica\Network\Probe; use Friendica\Protocol\Diaspora; use Friendica\Protocol\OStatus; @@ -506,8 +507,7 @@ class Notifier { logger('Activating internal PuSH for item '.$item_id, LOGGER_DEBUG); // Handling the pubsubhubbub requests - Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true], - 'PubSubPublish'); + PushSubscriber::publishFeed($a->queue['priority']); } logger('notifier: calling hooks for ' . $cmd . ' ' . $item_id, LOGGER_DEBUG); diff --git a/src/Worker/PubSubPublish.php b/src/Worker/PubSubPublish.php index 1b2dbbef9f..27b6f3d9a1 100644 --- a/src/Worker/PubSubPublish.php +++ b/src/Worker/PubSubPublish.php @@ -20,24 +20,11 @@ require_once 'include/items.php'; class PubSubPublish { public static function execute($pubsubpublish_id = 0) { - global $a; - - if ($pubsubpublish_id != 0) { - self::publish($pubsubpublish_id); + if ($pubsubpublish_id == 0) { return; } - // We'll push to each subscriber that has push > 0, - // i.e. there has been an update (set in notifier.php). - $subscribers = dba::select('push_subscriber', ['id', 'callback_url'], ["`push` > 0 AND `next_try` < UTC_TIMESTAMP()"]); - - while ($subscriber = dba::fetch($subscribers)) { - logger("Publish feed to " . $subscriber["callback_url"], LOGGER_DEBUG); - Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true], - 'PubSubPublish', (int)$subscriber["id"]); - } - - dba::close($subscribers); + self::publish($pubsubpublish_id); } private static function publish($id) { diff --git a/src/Worker/Queue.php b/src/Worker/Queue.php index 20ade6dfae..50a9a5c91a 100644 --- a/src/Worker/Queue.php +++ b/src/Worker/Queue.php @@ -10,6 +10,7 @@ use Friendica\Core\Config; use Friendica\Core\Worker; use Friendica\Database\DBM; use Friendica\Model\Queue as QueueModel; +use Friendica\Model\PushSubscriber; use Friendica\Protocol\DFRN; use Friendica\Protocol\Diaspora; use Friendica\Protocol\PortableContact; @@ -34,7 +35,7 @@ class Queue logger('filling queue jobs - start'); // Handling the pubsubhubbub requests - Worker::add(['priority' => PRIORITY_LOW, 'dont_fork' => true], 'PubSubPublish'); + PushSubscriber::publishFeed(PRIORITY_LOW); $r = dba::inArray(dba::p("SELECT `id` FROM `queue` WHERE `next` < UTC_TIMESTAMP() ORDER BY `batch`, `cid`"));