Added counters table for storing numbers of things statically.
This commit is contained in:
parent
35598a01a8
commit
cb40f1efce
12 changed files with 310 additions and 258 deletions
tools
58
tools/cron
58
tools/cron
|
@ -80,6 +80,64 @@ msz_sched_task_func('Recount forum topics and posts.', true,
|
|||
msz_sched_task_sql('Clean up expired 2fa tokens.', false,
|
||||
'DELETE FROM msz_auth_tfa WHERE tfa_created < NOW() - INTERVAL 15 MINUTE');
|
||||
|
||||
// make sure this one remains last
|
||||
msz_sched_task_func('Resync statistics counters.', true, function() use ($msz) {
|
||||
$dbConn = $msz->getDbConn();
|
||||
$counters = $msz->getCounters();
|
||||
|
||||
$stats = [
|
||||
'users:total' => 'SELECT COUNT(*) FROM msz_users',
|
||||
'users:active' => 'SELECT COUNT(*) FROM msz_users WHERE user_active IS NOT NULL AND user_deleted IS NULL',
|
||||
'users:inactive' => 'SELECT COUNT(*) FROM msz_users WHERE user_active IS NULL OR user_deleted IS NOT NULL',
|
||||
'users:online:recent' => 'SELECT COUNT(*) FROM msz_users WHERE user_active >= NOW() - INTERVAL 1 HOUR', // used to be 5 minutes, but this script runs every hour soooo
|
||||
'users:online:today' => 'SELECT COUNT(*) FROM msz_users WHERE user_active >= NOW() - INTERVAL 24 HOUR',
|
||||
'auditlogs:total' => 'SELECT COUNT(*) FROM msz_audit_log',
|
||||
'changelog:changes:total' => 'SELECT COUNT(*) FROM msz_changelog_changes',
|
||||
'changelog:tags:total' => 'SELECT COUNT(*) FROM msz_changelog_tags',
|
||||
'comments:cats:total' => 'SELECT COUNT(*) FROM msz_comments_categories',
|
||||
'comments:cats:locked' => 'SELECT COUNT(*) FROM msz_comments_categories WHERE category_locked IS NOT NULL',
|
||||
'comments:posts:total' => 'SELECT COUNT(*) FROM msz_comments_posts',
|
||||
'comments:posts:visible' => 'SELECT COUNT(*) FROM msz_comments_posts WHERE comment_deleted IS NULL',
|
||||
'comments:posts:deleted' => 'SELECT COUNT(*) FROM msz_comments_posts WHERE comment_deleted IS NOT NULL',
|
||||
'comments:posts:replies' => 'SELECT COUNT(*) FROM msz_comments_posts WHERE comment_reply_to IS NOT NULL',
|
||||
'comments:posts:pinned' => 'SELECT COUNT(*) FROM msz_comments_posts WHERE comment_pinned IS NOT NULL',
|
||||
'comments:posts:edited' => 'SELECT COUNT(*) FROM msz_comments_posts WHERE comment_edited IS NOT NULL',
|
||||
'comments:votes:likes' => 'SELECT COUNT(*) FROM msz_comments_votes WHERE comment_vote > 0',
|
||||
'comments:votes:dislikes' => 'SELECT COUNT(*) FROM msz_comments_votes WHERE comment_vote < 0',
|
||||
'forum:posts:total' => 'SELECT COUNT(*) FROM msz_forum_posts',
|
||||
'forum:posts:visible' => 'SELECT COUNT(*) FROM msz_forum_posts WHERE post_deleted IS NULL',
|
||||
'forum:posts:deleted' => 'SELECT COUNT(*) FROM msz_forum_posts WHERE post_deleted IS NOT NULL',
|
||||
'forum:posts:edited' => 'SELECT COUNT(*) FROM msz_forum_posts WHERE post_edited IS NOT NULL',
|
||||
'forum:posts:parse:plain' => 'SELECT COUNT(*) FROM msz_forum_posts WHERE post_parse = 0',
|
||||
'forum:posts:parse:bbcode' => 'SELECT COUNT(*) FROM msz_forum_posts WHERE post_parse = 1',
|
||||
'forum:posts:parse:markdown' => 'SELECT COUNT(*) FROM msz_forum_posts WHERE post_parse = 2',
|
||||
'forum:posts:signature' => 'SELECT COUNT(*) FROM msz_forum_posts WHERE post_display_signature <> 0',
|
||||
'forum:topics:total' => 'SELECT COUNT(*) FROM msz_forum_topics',
|
||||
'forum:topics:type:normal' => 'SELECT COUNT(*) FROM msz_forum_topics WHERE topic_type = 0',
|
||||
'forum:topics:type:pinned' => 'SELECT COUNT(*) FROM msz_forum_topics WHERE topic_type = 1',
|
||||
'forum:topics:type:announce' => 'SELECT COUNT(*) FROM msz_forum_topics WHERE topic_type = 2',
|
||||
'forum:topics:type:global' => 'SELECT COUNT(*) FROM msz_forum_topics WHERE topic_type = 3',
|
||||
'forum:topics:visible' => 'SELECT COUNT(*) FROM msz_forum_topics WHERE topic_deleted IS NULL',
|
||||
'forum:topics:deleted' => 'SELECT COUNT(*) FROM msz_forum_topics WHERE topic_deleted IS NOT NULL',
|
||||
'forum:topics:locked' => 'SELECT COUNT(*) FROM msz_forum_topics WHERE topic_locked IS NOT NULL',
|
||||
'auth:attempts:total' => 'SELECT COUNT(*) FROM msz_login_attempts',
|
||||
'auth:attempts:failed' => 'SELECT COUNT(*) FROM msz_login_attempts WHERE attempt_success = 0',
|
||||
'auth:sessions:total' => 'SELECT COUNT(*) FROM msz_sessions',
|
||||
'auth:tfasessions:total' => 'SELECT COUNT(*) FROM msz_auth_tfa',
|
||||
'auth:recovery:total' => 'SELECT COUNT(*) FROM msz_users_password_resets',
|
||||
'users:modnotes:total' => 'SELECT COUNT(*) FROM msz_users_modnotes',
|
||||
'users:warnings:total' => 'SELECT COUNT(*) FROM msz_users_warnings',
|
||||
'users:warnings:visible' => 'SELECT COUNT(*) FROM msz_users_warnings WHERE warn_created > NOW() - INTERVAL 90 DAY',
|
||||
'users:bans:total' => 'SELECT COUNT(*) FROM msz_users_bans',
|
||||
'users:bans:active' => 'SELECT COUNT(*) FROM msz_users_bans WHERE ban_expires IS NULL OR ban_expires > NOW()',
|
||||
];
|
||||
|
||||
foreach($stats as $name => $query) {
|
||||
$result = $dbConn->query($query);
|
||||
$counters->set($name, $result->next() ? $result->getInteger(0) : 0);
|
||||
}
|
||||
});
|
||||
|
||||
echo 'Running ' . count($schedTasks) . ' tasks...' . PHP_EOL;
|
||||
|
||||
$dbConn = $msz->getDbConn();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue