diff options
author | Meik Sievertsen <acydburn@phpbb.com> | 2008-09-23 13:03:52 +0000 |
---|---|---|
committer | Meik Sievertsen <acydburn@phpbb.com> | 2008-09-23 13:03:52 +0000 |
commit | 9bb0d6e76df9d94a7ec0c4b3e371231dc6192d69 (patch) | |
tree | b5ff754d03b2690ff1b66c9484a4f11f58c63ac0 | |
parent | 4a3db854b7d0ce56f3a3033f1dcc9f5baa0af8f9 (diff) | |
download | forums-9bb0d6e76df9d94a7ec0c4b3e371231dc6192d69.tar forums-9bb0d6e76df9d94a7ec0c4b3e371231dc6192d69.tar.gz forums-9bb0d6e76df9d94a7ec0c4b3e371231dc6192d69.tar.bz2 forums-9bb0d6e76df9d94a7ec0c4b3e371231dc6192d69.tar.xz forums-9bb0d6e76df9d94a7ec0c4b3e371231dc6192d69.zip |
synchronise post count in steps
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@8912 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r-- | phpBB/includes/acp/acp_main.php | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index 46ff484a99..e1963d0752 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -184,17 +184,40 @@ class acp_main trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); } - $sql = 'SELECT COUNT(p.post_id) AS num_posts, u.user_id - FROM ' . USERS_TABLE . ' u - LEFT JOIN ' . POSTS_TABLE . ' p ON (u.user_id = p.poster_id AND p.post_postcount = 1 AND p.post_approved = 1) - GROUP BY u.user_id'; - $result = $db->sql_query($sql); + // Resync post counts + $start = 0; - while ($row = $db->sql_fetchrow($result)) + do { - $db->sql_query('UPDATE ' . USERS_TABLE . " SET user_posts = {$row['num_posts']} WHERE user_id = {$row['user_id']}"); + $sql = 'SELECT COUNT(p.post_id) AS num_posts, u.user_id + FROM ' . USERS_TABLE . ' u + LEFT JOIN ' . POSTS_TABLE . ' p ON (u.user_id = p.poster_id AND p.post_postcount = 1 AND p.post_approved = 1) + GROUP BY u.user_id + ORDER BY u.user_id ASC'; + $result = $db->sql_query_limit($sql, 200, $start); + + if ($row = $db->sql_fetchrow($result)) + { + $i = 0; + + do + { + $sql = 'UPDATE ' . USERS_TABLE . " SET user_posts = {$row['num_posts']} WHERE user_id = {$row['user_id']}"; + _sql($sql, $errored, $error_ary); + + $i++; + } + while ($row = $db->sql_fetchrow($result)); + + $start = ($i < 200) ? 0 : $start + 200; + } + else + { + $start = 0; + } + $db->sql_freeresult($result); } - $db->sql_freeresult($result); + while ($start); add_log('admin', 'LOG_RESYNC_POSTCOUNTS'); |