Some small performance tweaks
This commit is contained in:
parent
a1ee75eba7
commit
bb222209bc
4 changed files with 26 additions and 9 deletions
|
@ -138,7 +138,7 @@ function ping_init(App $a)
|
||||||
|
|
||||||
$condition = ["`unseen` AND `uid` = ? AND NOT `origin` AND (`vid` != ? OR `vid` IS NULL)",
|
$condition = ["`unseen` AND `uid` = ? AND NOT `origin` AND (`vid` != ? OR `vid` IS NULL)",
|
||||||
local_user(), Verb::getID(Activity::FOLLOW)];
|
local_user(), Verb::getID(Activity::FOLLOW)];
|
||||||
$items = Post::selectForUser(local_user(), ['wall', 'uid', 'uri-id'], $condition);
|
$items = Post::selectForUser(local_user(), ['wall', 'uid', 'uri-id'], $condition, ['limit' => 1000]);
|
||||||
if (DBA::isResult($items)) {
|
if (DBA::isResult($items)) {
|
||||||
$items_unseen = Post::toArray($items, false);
|
$items_unseen = Post::toArray($items, false);
|
||||||
$arr = ['items' => $items_unseen];
|
$arr = ['items' => $items_unseen];
|
||||||
|
@ -253,8 +253,8 @@ function ping_init(App $a)
|
||||||
|
|
||||||
$data['intro'] = $intro_count;
|
$data['intro'] = $intro_count;
|
||||||
$data['mail'] = $mail_count;
|
$data['mail'] = $mail_count;
|
||||||
$data['net'] = $network_count;
|
$data['net'] = ($network_count < 1000) ? $network_count : '999+';
|
||||||
$data['home'] = $home_count;
|
$data['home'] = ($home_count < 1000) ? $home_count : '999+';
|
||||||
$data['register'] = $register_count;
|
$data['register'] = $register_count;
|
||||||
|
|
||||||
$data['all-events'] = $all_events;
|
$data['all-events'] = $all_events;
|
||||||
|
|
|
@ -215,8 +215,9 @@ class ForumManager
|
||||||
AND `contact`.`network` IN (?, ?) AND `contact`.`contact-type` = ?
|
AND `contact`.`network` IN (?, ?) AND `contact`.`contact-type` = ?
|
||||||
AND NOT `contact`.`blocked` AND NOT `contact`.`hidden`
|
AND NOT `contact`.`blocked` AND NOT `contact`.`hidden`
|
||||||
AND NOT `contact`.`pending` AND NOT `contact`.`archive`
|
AND NOT `contact`.`pending` AND NOT `contact`.`archive`
|
||||||
|
AND `contact`.`uid` = ?
|
||||||
GROUP BY `contact`.`id`",
|
GROUP BY `contact`.`id`",
|
||||||
local_user(), Protocol::DFRN, Protocol::ACTIVITYPUB, Contact::TYPE_COMMUNITY
|
local_user(), Protocol::DFRN, Protocol::ACTIVITYPUB, Contact::TYPE_COMMUNITY, local_user()
|
||||||
);
|
);
|
||||||
|
|
||||||
return DBA::toArray($stmtContacts);
|
return DBA::toArray($stmtContacts);
|
||||||
|
|
|
@ -545,13 +545,21 @@ class Tag
|
||||||
*/
|
*/
|
||||||
public static function setGlobalTrendingHashtags(int $period, int $limit = 10)
|
public static function setGlobalTrendingHashtags(int $period, int $limit = 10)
|
||||||
{
|
{
|
||||||
|
// Get a uri-id that is at least X hours old.
|
||||||
|
// We use the uri-id in the query for the hash tags since this is much faster
|
||||||
|
$post = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? HOUR", 0, $period],
|
||||||
|
['order' => ['received' => true]]);
|
||||||
|
if (empty($post['uri-id'])) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
$block_sql = self::getBlockedSQL();
|
$block_sql = self::getBlockedSQL();
|
||||||
|
|
||||||
$tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
$tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
||||||
FROM `tag-search-view`
|
FROM `tag-search-view`
|
||||||
WHERE `private` = ? AND `uid` = ? AND `received` > DATE_SUB(NOW(), INTERVAL ? HOUR) $block_sql
|
WHERE `private` = ? AND `uid` = ? AND `uri-id` > ? $block_sql
|
||||||
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
||||||
Item::PUBLIC, 0, $period, $limit);
|
Item::PUBLIC, 0, $post['uri-id'], $limit);
|
||||||
|
|
||||||
if (DBA::isResult($tagsStmt)) {
|
if (DBA::isResult($tagsStmt)) {
|
||||||
$tags = DBA::toArray($tagsStmt);
|
$tags = DBA::toArray($tagsStmt);
|
||||||
|
@ -590,13 +598,21 @@ class Tag
|
||||||
*/
|
*/
|
||||||
public static function setLocalTrendingHashtags(int $period, int $limit = 10)
|
public static function setLocalTrendingHashtags(int $period, int $limit = 10)
|
||||||
{
|
{
|
||||||
|
// Get a uri-id that is at least X hours old.
|
||||||
|
// We use the uri-id in the query for the hash tags since this is much faster
|
||||||
|
$post = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? HOUR", 0, $period],
|
||||||
|
['order' => ['received' => true]]);
|
||||||
|
if (empty($post['uri-id'])) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
$block_sql = self::getBlockedSQL();
|
$block_sql = self::getBlockedSQL();
|
||||||
|
|
||||||
$tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
$tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors`
|
||||||
FROM `tag-search-view`
|
FROM `tag-search-view`
|
||||||
WHERE `private` = ? AND `wall` AND `origin` AND `received` > DATE_SUB(NOW(), INTERVAL ? HOUR) $block_sql
|
WHERE `private` = ? AND `wall` AND `origin` AND `uri-id` > ? $block_sql
|
||||||
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?",
|
||||||
Item::PUBLIC, $period, $limit);
|
Item::PUBLIC, $post['uri-id'], $limit);
|
||||||
|
|
||||||
if (DBA::isResult($tagsStmt)) {
|
if (DBA::isResult($tagsStmt)) {
|
||||||
$tags = DBA::toArray($tagsStmt);
|
$tags = DBA::toArray($tagsStmt);
|
||||||
|
|
|
@ -170,7 +170,7 @@ class ExpirePosts
|
||||||
{
|
{
|
||||||
// We have to avoid deleting newly created "item-uri" entries.
|
// We have to avoid deleting newly created "item-uri" entries.
|
||||||
// So we fetch a post that had been stored yesterday and only delete older ones.
|
// So we fetch a post that had been stored yesterday and only delete older ones.
|
||||||
$item = Post::selectFirst(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? DAY", 0, 1],
|
$item = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? DAY", 0, 1],
|
||||||
['order' => ['received' => true]]);
|
['order' => ['received' => true]]);
|
||||||
if (empty($item['uri-id'])) {
|
if (empty($item['uri-id'])) {
|
||||||
Logger::warning('No item with uri-id found - we better quit here');
|
Logger::warning('No item with uri-id found - we better quit here');
|
||||||
|
|
Loading…
Reference in a new issue