New rating scale
This commit is contained in:
parent
975bb76291
commit
7370a075f8
|
@ -693,16 +693,23 @@ class Feed
|
||||||
$max = $ppd;
|
$max = $ppd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($max > 48) {
|
||||||
if ($max >= 24) {
|
$priority = 1; // Poll every quarter hour
|
||||||
$priority = 0; // Poll with the minimum poll intervall
|
} elseif ($max > 24) {
|
||||||
} elseif ($max >= 12) {
|
$priority = 2; // Poll half an hour
|
||||||
$priority = 1; // Poll hourly
|
} elseif ($max > 12) {
|
||||||
|
$priority = 3; // Poll hourly
|
||||||
|
} elseif ($max > 8) {
|
||||||
|
$priority = 4; // Poll every two hours
|
||||||
|
} elseif ($max > 4) {
|
||||||
|
$priority = 5; // Poll every three hours
|
||||||
|
} elseif ($max > 2) {
|
||||||
|
$priority = 6; // Poll every six hours
|
||||||
} elseif ($max > 1) {
|
} elseif ($max > 1) {
|
||||||
$priority = 2; // Poll twice a day
|
$priority = 7; // Poll twice a day
|
||||||
} else {
|
} else {
|
||||||
/// @todo In the future we could calculate the days between the posts to set even lower priorities
|
/// @todo In the future we could calculate the days between the posts to set even lower priorities
|
||||||
$priority = 3; // Poll once a day
|
$priority = 8; // Poll once a day
|
||||||
}
|
}
|
||||||
Logger::info('Calculated priority by the posts per day', ['priority' => $priority, 'max' => round($max, 2), 'id' => $contact['id'], 'uid' => $contact['uid'], 'url' => $contact['url']]);
|
Logger::info('Calculated priority by the posts per day', ['priority' => $priority, 'max' => round($max, 2), 'id' => $contact['id'], 'uid' => $contact['uid'], 'url' => $contact['url']]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -219,25 +219,37 @@ class Cron
|
||||||
while ($contact = DBA::fetch($contacts)) {
|
while ($contact = DBA::fetch($contacts)) {
|
||||||
// Use the "rating" field when auto adjusting the poll intervall
|
// Use the "rating" field when auto adjusting the poll intervall
|
||||||
if (DI::config()->get('system', 'adjust_poll_frequency') && ($contact['network'] == Protocol::FEED)) {
|
if (DI::config()->get('system', 'adjust_poll_frequency') && ($contact['network'] == Protocol::FEED)) {
|
||||||
$contact['priority'] = max($contact['rating'], $contact['priority']);
|
$rating = $contact['rating'];
|
||||||
|
} elseif ($contact['priority'] == 1) {
|
||||||
|
$rating = 3;
|
||||||
|
} elseif ($contact['priority'] == 2) {
|
||||||
|
$rating = 7;
|
||||||
|
} elseif ($contact['priority'] == 3) {
|
||||||
|
$rating = 8;
|
||||||
|
} elseif ($contact['priority'] == 4) {
|
||||||
|
$rating = 9;
|
||||||
|
} elseif ($contact['priority'] == 5) {
|
||||||
|
$rating = 10;
|
||||||
|
} else {
|
||||||
|
$rating = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Friendica and OStatus are checked once a day
|
// Friendica and OStatus are checked once a day
|
||||||
if (in_array($contact['network'], [Protocol::DFRN, Protocol::OSTATUS])) {
|
if (in_array($contact['network'], [Protocol::DFRN, Protocol::OSTATUS])) {
|
||||||
$contact['priority'] = 3;
|
$rating = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ActivityPub is checked once a week
|
// ActivityPub is checked once a week
|
||||||
if ($contact['network'] == Protocol::ACTIVITYPUB) {
|
if ($contact['network'] == Protocol::ACTIVITYPUB) {
|
||||||
$contact['priority'] = 4;
|
$rating = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check archived contacts once a month
|
// Check archived contacts once a month
|
||||||
if ($contact['archive']) {
|
if ($contact['archive']) {
|
||||||
$contact['priority'] = 5;
|
$rating = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($contact['priority'] >= 0) {
|
if ($rating >= 0) {
|
||||||
$update = false;
|
$update = false;
|
||||||
|
|
||||||
$t = $contact['last-update'];
|
$t = $contact['last-update'];
|
||||||
|
@ -245,32 +257,57 @@ class Cron
|
||||||
/*
|
/*
|
||||||
* Based on $contact['priority'], should we poll this site now? Or later?
|
* Based on $contact['priority'], should we poll this site now? Or later?
|
||||||
*/
|
*/
|
||||||
switch ($contact['priority']) {
|
switch ($rating) {
|
||||||
case 5:
|
case 10:
|
||||||
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 month")) {
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 month")) {
|
||||||
$update = true;
|
$update = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 9:
|
||||||
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 week")) {
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 week")) {
|
||||||
$update = true;
|
$update = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 8:
|
||||||
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 day")) {
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 day")) {
|
||||||
$update = true;
|
$update = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 7:
|
||||||
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 12 hour")) {
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 12 hour")) {
|
||||||
$update = true;
|
$update = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 6:
|
||||||
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 6 hour")) {
|
||||||
|
$update = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 3 hour")) {
|
||||||
|
$update = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 2 hour")) {
|
||||||
|
$update = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 hour")) {
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 1 hour")) {
|
||||||
$update = true;
|
$update = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 2:
|
||||||
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 30 minute")) {
|
||||||
|
$update = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + 15 minute")) {
|
||||||
|
$update = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
default:
|
default:
|
||||||
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + " . $min_poll_interval . " minute")) {
|
if (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . " + " . $min_poll_interval . " minute")) {
|
||||||
|
|
Loading…
Reference in a new issue