diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2013-07-14 10:35:19 -0400 | 
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2013-09-26 01:09:17 +0200 | 
| commit | a7af736b9776d724fd2ca77b84b6623eba3edaef (patch) | |
| tree | 518b64d69017f3ef4248115ce8102c0d9ea646d4 | |
| parent | 8da31332381b572f8d03c63d4c32a4f32ed8775f (diff) | |
| download | forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar.gz forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar.bz2 forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.tar.xz forums-a7af736b9776d724fd2ca77b84b6623eba3edaef.zip | |
[ticket/11691] Stagger the convertion of soft delete updates
PHPBB3-11691
| -rw-r--r-- | phpBB/phpbb/db/migration/data/v310/softdelete_p1.php | 26 | 
1 files changed, 23 insertions, 3 deletions
| diff --git a/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php b/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php index 0418d5cc2b..27bf5b6a57 100644 --- a/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php +++ b/phpBB/phpbb/db/migration/data/v310/softdelete_p1.php @@ -101,7 +101,8 @@ class softdelete_p1 extends \phpbb\db\migration\migration  		return array(  			array('custom', array(array($this, 'update_post_visibility'))),  			array('custom', array(array($this, 'update_topic_visibility'))), -			array('custom', array(array($this, 'update_topic_forum_counts'))), +			array('custom', array(array($this, 'update_topics_post_counts'))), +			array('custom', array(array($this, 'update_forums_topic_and_post_counts'))),  			array('permission.add', array('f_softdelete', false)),  			array('permission.add', array('m_softdelete', false)), @@ -122,7 +123,7 @@ class softdelete_p1 extends \phpbb\db\migration\migration  		$this->sql_query($sql);  	} -	public function update_topic_forum_counts() +	public function update_topics_post_counts()  	{  		$sql = 'UPDATE ' . $this->table_prefix . 'topics  			SET topic_posts_approved = topic_replies + 1, @@ -135,15 +136,24 @@ class softdelete_p1 extends \phpbb\db\migration\migration  				topic_posts_unapproved = (topic_replies_real - topic_replies) + 1  			WHERE topic_visibility = ' . ITEM_UNAPPROVED;  		$this->sql_query($sql); +	} + +	public function update_forums_topic_and_post_counts($start) +	{ +		$start = (int) $start; +		$limit = 2; +		$i = 0;  		$sql = 'SELECT forum_id, topic_visibility, COUNT(topic_id) AS sum_topics, SUM(topic_posts_approved) AS sum_posts_approved, SUM(topic_posts_unapproved) AS sum_posts_unapproved  			FROM ' . $this->table_prefix . 'topics  			GROUP BY forum_id, topic_visibility'; -		$result = $this->db->sql_query($sql); +		$result = $this->db->sql_query_limit($sql, $start, $limit);  		$update_forums = array();  		while ($row = $this->db->sql_fetchrow($result))  		{ +			$i++; +  			$forum_id = (int) $row['forum_id'];  			if (!isset($update_forums[$forum_id]))  			{ @@ -169,5 +179,15 @@ class softdelete_p1 extends \phpbb\db\migration\migration  				WHERE forum_id = ' . $forum_id;  			$this->sql_query($sql);  		} + + +		if ($i < $limit) +		{ +			// There are no more topics, we are done +			return; +		} + +		// There are still more topics to query, return the next start value +		return $start + $limit;  	}  } | 
