mirror of
				https://github.com/phpbb/phpbb.git
				synced 2025-10-28 14:08:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			186 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
| *
 | |
| * @package phpBB3
 | |
| * @copyright (c) 2001, 2003 phpBB Group
 | |
| * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
 | |
| *
 | |
| */
 | |
| 
 | |
| //
 | |
| // Security message:
 | |
| //
 | |
| // This script is potentially dangerous.
 | |
| // Remove or comment the next line (die(".... ) to enable this script.
 | |
| // Do NOT FORGET to either remove this script or disable it after you have used it.
 | |
| //
 | |
| die("Please read the first lines of this script for instructions on how to enable it");
 | |
| 
 | |
| 
 | |
| define('IN_PHPBB', true);
 | |
| $phpbb_root_path = './../';
 | |
| $phpEx = substr(strrchr(__FILE__, '.'), 1);
 | |
| include($phpbb_root_path . 'common.'.$phpEx);
 | |
| include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
 | |
| 
 | |
| set_time_limit(0);
 | |
| header('Expires: 0');
 | |
| ignore_user_abort(true);
 | |
| 
 | |
| // number of topics to create
 | |
| $num_topics = 10000;
 | |
| 
 | |
| // number of topics to be generated per call
 | |
| $batch_size = 2000;
 | |
| 
 | |
| // max number of posts per topic
 | |
| $posts_per_topic = 500;
 | |
| 
 | |
| 
 | |
| // general vars
 | |
| $mode = request_var('mode', 'generate');
 | |
| $start = request_var('start', 0);
 | |
| 
 | |
| switch ($mode)
 | |
| {
 | |
| 	case 'generate':
 | |
| 		$user_ids = $forum_ids = $topic_rows = array();
 | |
| 
 | |
| 		$sql = 'SELECT user_id FROM ' . USERS_TABLE . ' WHERE user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') OR user_id = ' . ANONYMOUS;
 | |
| 		$result = $db->sql_query($sql);
 | |
| 		while ($row = $db->sql_fetchrow($result))
 | |
| 		{
 | |
| 			$user_ids[] = $row['user_id'];
 | |
| 		}
 | |
| 		$db->sql_freeresult($result);
 | |
| 
 | |
| 		$sql = 'SELECT forum_id FROM ' . FORUMS_TABLE . ' WHERE forum_type = ' . FORUM_POST;
 | |
| 		$result = $db->sql_query($sql);
 | |
| 		while ($row = $db->sql_fetchrow($result))
 | |
| 		{
 | |
| 			$forum_ids[$row['forum_id']] = $row['forum_id'];
 | |
| 		}
 | |
| 		$db->sql_freeresult($result);
 | |
| 
 | |
| 		if (!$start)
 | |
| 		{
 | |
| 			$db->sql_query('TRUNCATE TABLE ' . POSTS_TABLE);
 | |
| 			$db->sql_query('TRUNCATE TABLE ' . TOPICS_TABLE);
 | |
| //			$db->sql_query('TRUNCATE TABLE ' . TOPICS_TABLE . '_prefetch');
 | |
| 		}
 | |
| 
 | |
| 		$db->sql_query('LOCK TABLES ' . POSTS_TABLE . ' WRITE, ' . TOPICS_TABLE . ' WRITE');
 | |
| 
 | |
| 		for ($topic_id = $start + 1; $topic_id < min($start + $batch_size, $num_topics + 1); ++$topic_id)
 | |
| 		{
 | |
| 			$forum_id = array_rand($forum_ids);
 | |
| 
 | |
| 			if (count($topic_rows) == 10)
 | |
| 			{
 | |
| 				$sql = 'INSERT IGNORE INTO ' . TOPICS_TABLE . " (topic_id, forum_id, topic_title, topic_reported)
 | |
| 					VALUES " . implode(', ', $topic_rows);
 | |
| 				$db->sql_query($sql);
 | |
| 
 | |
| 				$topic_rows = array();
 | |
| 			}
 | |
| 
 | |
| 			$topic_rows[] = "($topic_id, $forum_id, '$forum_id-$topic_id', " . (($topic_id % 34) ? '0' : '1') . ')';
 | |
| 
 | |
| 			$sql = 'INSERT IGNORE INTO ' . POSTS_TABLE . ' (topic_id, forum_id, poster_id, post_subject, post_text, post_username, post_visibility, post_time, post_reported)
 | |
| 				VALUES ';
 | |
| 
 | |
| 			$rows = array();
 | |
| 			$post_time = mt_rand(0, time());
 | |
| 
 | |
| 			$num_posts = $posts_per_topic; //mt_rand(1, $posts_per_topic);
 | |
| 			for ($i = 0; $i < $num_posts; ++$i)
 | |
| 			{
 | |
| 				$poster_id = $user_ids[array_rand($user_ids)];
 | |
| 				$poster_name = ($poster_id == ANONYMOUS) ? rndm_username() : '';
 | |
| 				$rows[] = "($topic_id, $forum_id, $poster_id, '$forum_id-$topic_id-$i', '$forum_id-$topic_id-$i', '$poster_name', " . (mt_rand(0, 12) ? '1' : '0') . ', ' . ($post_time + $i * 60) . ', ' . (mt_rand(0, 32) ? '0' : '1') . ')';
 | |
| 			}
 | |
| 
 | |
| 			$db->sql_query($sql . implode(', ', $rows));
 | |
| 		}
 | |
| 
 | |
| 		if (count($topic_rows))
 | |
| 		{
 | |
| 			$sql = 'INSERT IGNORE INTO ' . TOPICS_TABLE . " (topic_id, forum_id, topic_title, topic_reported)
 | |
| 				VALUES " . implode(', ', $topic_rows);
 | |
| 			$db->sql_query($sql);
 | |
| 		}
 | |
| 
 | |
| 		$db->sql_query('UNLOCK TABLES');
 | |
| 
 | |
| 		if ($topic_id >= $num_topics)
 | |
| 		{
 | |
| 			echo '<meta http-equiv="refresh" content="10; url=fill.' . $phpEx . '?mode=sync&' . time() . '">And now for something completely different...';
 | |
| 
 | |
| 			$db->sql_query('ANALYZE TABLES ' . TOPICS_TABLE . ', ' . POSTS_TABLE);
 | |
| 			flush();
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			echo '<meta http-equiv="refresh" content="10; url=fill.' . $phpEx . '?start=' . $topic_id . '&' . time() . '">To the next page... (' . $topic_id . '/' . $num_topics . ')';
 | |
| 			flush();
 | |
| 		}
 | |
| 	break;
 | |
| 
 | |
| 	case 'sync':
 | |
| /*		error_reporting(E_ALL);
 | |
| 		$sync_all = TRUE;
 | |
| 
 | |
| 		if ($sync_all)
 | |
| 		{
 | |
| 			$s = explode(' ', microtime());
 | |
| 			sync('topic', '', '', TRUE, FALSE);
 | |
| //			sync('forum');
 | |
| 			$e = explode(' ', microtime());
 | |
| 
 | |
| 			echo '<pre><b>' . ($e[0] + $e[1] - $s[0] - $s[1]) . '</b></pre>';
 | |
| 			echo '<a href="fill.' . $phpEx . '">Here we go again</a>';
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$batch_size = $batch_size * 10;
 | |
| 			$end = $start + $batch_size;
 | |
| 
 | |
| 			$s = explode(' ', microtime());
 | |
| 			sync('topic', 'range', "topic_id BETWEEN $start AND $end", TRUE, FALSE);
 | |
| 			$e = explode(' ', microtime());
 | |
| 
 | |
| 			echo '<pre>Time taken: <b>' . ($e[0] + $e[1] - $s[0] - $s[1]) . '</b></pre>';
 | |
| 
 | |
| 			if ($end < $num_topics)
 | |
| 			{
 | |
| 				$start += $batch_size;
 | |
| 				echo '<meta http-equiv="refresh" content="0; url=fill.' . $phpEx . "?mode=sync&start=$start&" . time() . "\">And now for something completely different... ($start/$num_topics)";
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				echo '<a href="fill.' . $phpEx . '">Here we go again</a>';
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		if (isset($_GET['explain']))
 | |
| 		{
 | |
| 			trigger_error('Done');
 | |
| 		}
 | |
| 	*/
 | |
| }
 | |
| 
 | |
| $db->sql_close();
 | |
| 
 | |
| function rndm_username()
 | |
| {
 | |
| 	static $usernames;
 | |
| 
 | |
| 	if (!isset($usernames))
 | |
| 	{
 | |
| 		$usernames = get_defined_functions();
 | |
| 		$usernames = $usernames['internal'];
 | |
| 	}
 | |
| 
 | |
| 	return $usernames[array_rand($usernames)];
 | |
| }
 |