From 2e17e448deed073f8614bb555a8ef20c57291c2a Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 4 Oct 2009 18:14:59 +0000 Subject: Copy 3.0.x branch to trunk git-svn-id: file:///svn/phpbb/trunk@10211 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/develop/fill.php | 190 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 phpBB/develop/fill.php (limited to 'phpBB/develop/fill.php') diff --git a/phpBB/develop/fill.php b/phpBB/develop/fill.php new file mode 100644 index 0000000000..336e510d06 --- /dev/null +++ b/phpBB/develop/fill.php @@ -0,0 +1,190 @@ +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_approved, 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 'And now for something completely different...'; + + $db->sql_query('ANALYZE TABLES ' . TOPICS_TABLE . ', ' . POSTS_TABLE); + flush(); + } + else + { + echo '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 '
' . ($e[0] + $e[1] - $s[0] - $s[1]) . '
'; + echo 'Here we go again'; + } + 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 '
Time taken: ' . ($e[0] + $e[1] - $s[0] - $s[1]) . '
'; + + if ($end < $num_topics) + { + $start += $batch_size; + echo 'And now for something completely different... ($start/$num_topics)"; + } + else + { + echo 'Here we go again'; + } + } + + 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)]; +} + +?> \ No newline at end of file -- cgit v1.2.1