Moved functionality in new model class

This commit is contained in:
Michael 2018-05-17 23:30:49 +00:00
parent 5a1e1c1ec9
commit 61824119e4
4 changed files with 36 additions and 18 deletions

View File

@ -0,0 +1,30 @@
<?php
/**
* @file src/Model/PushSubscriber.php
*/
namespace Friendica\Model;
use Friendica\Core\Worker;
use dba;
require_once 'include/dba.php';
class PushSubscriber
{
/**
* @param string $priority Priority for push workers
*/
public static function publishFeed($priority = PRIORITY_HIGH)
{
// 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, 'PubSubPublish', (int)$subscriber["id"]);
}
dba::close($subscribers);
}
}

View File

@ -11,6 +11,7 @@ use Friendica\Database\DBM;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\Group; use Friendica\Model\Group;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Model\PushSubscriber;
use Friendica\Network\Probe; use Friendica\Network\Probe;
use Friendica\Protocol\Diaspora; use Friendica\Protocol\Diaspora;
use Friendica\Protocol\OStatus; use Friendica\Protocol\OStatus;
@ -506,8 +507,7 @@ class Notifier {
logger('Activating internal PuSH for item '.$item_id, LOGGER_DEBUG); logger('Activating internal PuSH for item '.$item_id, LOGGER_DEBUG);
// Handling the pubsubhubbub requests // Handling the pubsubhubbub requests
Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true], PushSubscriber::publishFeed($a->queue['priority']);
'PubSubPublish');
} }
logger('notifier: calling hooks for ' . $cmd . ' ' . $item_id, LOGGER_DEBUG); logger('notifier: calling hooks for ' . $cmd . ' ' . $item_id, LOGGER_DEBUG);

View File

@ -20,24 +20,11 @@ require_once 'include/items.php';
class PubSubPublish { class PubSubPublish {
public static function execute($pubsubpublish_id = 0) public static function execute($pubsubpublish_id = 0)
{ {
global $a; if ($pubsubpublish_id == 0) {
if ($pubsubpublish_id != 0) {
self::publish($pubsubpublish_id);
return; return;
} }
// We'll push to each subscriber that has push > 0, self::publish($pubsubpublish_id);
// 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);
} }
private static function publish($id) { private static function publish($id) {

View File

@ -10,6 +10,7 @@ use Friendica\Core\Config;
use Friendica\Core\Worker; use Friendica\Core\Worker;
use Friendica\Database\DBM; use Friendica\Database\DBM;
use Friendica\Model\Queue as QueueModel; use Friendica\Model\Queue as QueueModel;
use Friendica\Model\PushSubscriber;
use Friendica\Protocol\DFRN; use Friendica\Protocol\DFRN;
use Friendica\Protocol\Diaspora; use Friendica\Protocol\Diaspora;
use Friendica\Protocol\PortableContact; use Friendica\Protocol\PortableContact;
@ -34,7 +35,7 @@ class Queue
logger('filling queue jobs - start'); logger('filling queue jobs - start');
// Handling the pubsubhubbub requests // 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`")); $r = dba::inArray(dba::p("SELECT `id` FROM `queue` WHERE `next` < UTC_TIMESTAMP() ORDER BY `batch`, `cid`"));