mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-24 12:03:21 +01:00
300 lines
9.4 KiB
PHP
300 lines
9.4 KiB
PHP
<?
|
|
include('../extension.inc');
|
|
include('../config.'.$phpEx);
|
|
include('../includes/constants.'.$phpEx);
|
|
include('../functions/functions.'.$phpEx);
|
|
include('../includes/db.'.$phpEx);
|
|
|
|
srand ((double) microtime() * 1000000);
|
|
set_time_limit(20*60);
|
|
|
|
// The script expects the ID's in the tables to sequential (1,2,3,4,5),
|
|
// so no holes please (1,4,5,8)...
|
|
$nr_of_users = nrof(USERS_TABLE);
|
|
$nr_of_cats = nrof(CATEGORIES_TABLE);
|
|
$nr_of_forums = nrof(FORUMS_TABLE);
|
|
$nr_of_posts = nrof(POSTS_TABLE);
|
|
$nr_of_topics = nrof(TOPICS_TABLE); // create_topic() will keep this up to date
|
|
|
|
$u = $users;
|
|
|
|
$starttime = microtime();
|
|
|
|
while($users > 0){
|
|
|
|
$name = "testuser_" . ($nr_of_users+10);
|
|
createuser($name);
|
|
$users--;
|
|
}
|
|
if ($forums > 0){
|
|
create_forums($forums);
|
|
}
|
|
if ($posts > 0){
|
|
filldb($posts);
|
|
}
|
|
|
|
$endtime = microtime();
|
|
|
|
if ($submit="" || !isset($submit)){
|
|
?>
|
|
Hello, welcome to this little phpBB Benchmarking script :)<p>
|
|
|
|
At the moment there are:<br>
|
|
<table>
|
|
<tr><td align="right"><?=$nr_of_users?></td><td>Users</td></tr>
|
|
<tr><td align="right"><?=$nr_of_topics?></td><td>Topics</td></tr>
|
|
<tr><td align="right"><?=$nr_of_forums?></td><td>Forums</td></tr>
|
|
<tr><td align="right"><?=$nr_of_posts?></td><td>Posts</td></tr>
|
|
</table>
|
|
<p>
|
|
What do you want to create?<p>
|
|
|
|
<form method="get" action="<?=$PHP_SELF?>">
|
|
<input type="text" name="users" size="3"> Users<br>
|
|
<input type="text" name="forums" size="3"> Forums/categories<br>
|
|
<input type="text" name="posts" size="3"> Posts/topics (optional: post size in <input type="text" name="size" size="3"> bytes)<br>
|
|
<input type="submit" name="submit">
|
|
</form>
|
|
|
|
<?
|
|
} else {
|
|
|
|
|
|
list ($starttime_msec,$starttime_sec) = explode(" ",$starttime);
|
|
list ($endtime_msec,$endtime_sec) = explode(" ",$endtime);
|
|
$timetaken_sec = ($endtime_sec+$endtime_msec) - ($starttime_sec+$starttime_msec);
|
|
print "<B>TIME TAKEN : ".$timetaken_sec."s</B><BR>\n";
|
|
|
|
$starttime = microtime();
|
|
|
|
$result = $db->sql_query("SELECT * FROM users LIMIT 5,200");
|
|
$rowresult = $db->sql_fetchrowset($result);
|
|
|
|
$endtime = microtime();
|
|
|
|
for($i=0;$i<count($rowresult);$i++){
|
|
print $rowresult[$i]['user_id']." : ".$rowresult[$i]['username']."<BR>";
|
|
}
|
|
|
|
// while($row = $db->sql_fetchrow()){
|
|
// print $row['user_id']."<BR>";
|
|
// }
|
|
|
|
list ($starttime_msec,$starttime_sec) = explode(" ",$starttime);
|
|
list ($endtime_msec,$endtime_sec) = explode(" ",$endtime);
|
|
$timetaken_sec = ($endtime_sec+$endtime_msec) - ($starttime_sec+$starttime_msec);
|
|
print "<B>TIME TAKEN : ".$timetaken_sec."s</B><BR>\n";
|
|
|
|
print "<p>\n<a href=\"$PHP_SELF\">Back to the overview page</a>\n";
|
|
}
|
|
|
|
function filldb($newposts){
|
|
global $nr_of_topics;
|
|
global $nr_of_forums;
|
|
global $nr_of_users;
|
|
for($i=0 ; $i<=$newposts; $i++){
|
|
$userid = rand(1,$nr_of_users);
|
|
$forum = rand(1,$nr_of_forums);
|
|
if (rand(0,20) < 1 || $nr_of_topics == 0){
|
|
// create a new topic 1 in 20 times (or when there are none);
|
|
$topic = create_topic($userid, "This is test topic nr. $i", $forum);
|
|
} else {
|
|
// Otherwise create a reply(posting) somewhere.
|
|
$topic = rand(1,$nr_of_topics);
|
|
}
|
|
create_posting($userid, $topic, $forum);
|
|
}
|
|
}
|
|
|
|
|
|
function create_topic($userid, $subject, $forum){
|
|
global $db;
|
|
global $nr_of_topics;
|
|
$userdata = get_userdata($username, $db);
|
|
$time = time();
|
|
$sql = "INSERT INTO ".TOPICS_TABLE." (topic_title, topic_poster, forum_id, topic_time, topic_notify) VALUES ('$subject', '$userid', '$forum', '$time', 0)";
|
|
if (!$result = $db->sql_query($sql)) {
|
|
print "Couldn't create Topic $subject in DB!<br>\n";
|
|
print "This is the sql statement:<br>\n$sql\n<br>\n";
|
|
die;
|
|
} else {
|
|
print "<br>Topic '$subject' created!<br>\n";
|
|
$nr_of_topics++;
|
|
flush();
|
|
return mysql_insert_id($db->db_connect_id);
|
|
}
|
|
}
|
|
|
|
function create_posting($userid, $topic_id, $forum){
|
|
global $db;
|
|
$message = generatepost(650);
|
|
$time = time();
|
|
$poster_ip = "234234232";
|
|
|
|
$sql = "INSERT INTO ".POSTS_TABLE." (forum_id, topic_id, poster_id, post_time, poster_ip) VALUES ('$forum', '$topic_id', '$userid', '$time', '$poster_ip')";
|
|
if (!$result = $db->sql_query($sql)) {
|
|
print "Couldn't create post in $forum!<br>\n";
|
|
print "This is the sql statement:<br>\n$sql\n<br>\n";
|
|
die;
|
|
} else {
|
|
|
|
$post_id = mysql_insert_id($db->db_connect_id);
|
|
$sql = "INSERT INTO ".POSTS_TEXT_TABLE." (post_id, post_text) VALUES ('$post_id', '$message')";
|
|
if (!$result = $db->sql_query($sql)) {
|
|
print "Couldn't create post text in $forum!<br>\n";
|
|
print "This is the sql statement:<br>\n$sql\n<br>\n";
|
|
die;
|
|
}
|
|
print "$forum ";
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
function create_forums($totalforums){
|
|
global $db;
|
|
global $nr_of_cats;
|
|
$j=0;
|
|
for($i=0 ; $i<$totalforums; $i++){
|
|
if (rand(0,5) <= 2 || $nr_of_cats == 0){
|
|
// create a new cat at random times or when there are no cats yet.
|
|
$j++;
|
|
$catid = create_cat("Category $j");
|
|
} else {
|
|
// Otherwise create a forum in one of the cats.
|
|
$catid = rand(0,$nr_of_cats);
|
|
}
|
|
$forum = "Test forum number $i";
|
|
create_forum($catid, $forum);
|
|
}
|
|
}
|
|
|
|
function create_cat($category){
|
|
global $db;
|
|
global $nr_of_cats;
|
|
// At the moment cat_order is always one, oh well..
|
|
echo $sql = "INSERT INTO ".CATEGORIES_TABLE." (cat_title, cat_order) VALUES ('$category', '1')";
|
|
if (!$result = $db->sql_query($sql)) {
|
|
print "Couldn't create category \"$category\"!<br>\n";
|
|
die;
|
|
} else {
|
|
print "Category \"$category\" created!<br>\n";
|
|
$nr_of_cats++;
|
|
return mysql_insert_id($db->db_connect_id);
|
|
}
|
|
}
|
|
|
|
function create_forum($catid, $forum){
|
|
global $db;
|
|
global $nr_of_forums;
|
|
|
|
$sql = "INSERT INTO ".FORUMS_TABLE." (forum_name, forum_desc, forum_access, cat_id, forum_type) VALUES ('$forum', 'This is a forum created for the benchmark', '2', '$catid', '0')";
|
|
if (!$result = $db->sql_query($sql)) {
|
|
print "Couldn't create forum \"$forum\"!<br>\n";
|
|
die;
|
|
} else {
|
|
print "Forum \"$forum\" created!<br>\n";
|
|
$nr_of_forums++;
|
|
$forum_id = mysql_insert_id($db->db_connect_id);
|
|
// Sorry, no error checking. We just assume that if the forum can be
|
|
// created the moderator can be assigned too :)
|
|
$sql = "INSERT INTO ".FORUM_MODS_TABLE." (forum_id, user_id) VALUES ('$forum_id', '1')";
|
|
$result = $db->sql_query($sql);
|
|
return $forum_id;
|
|
}
|
|
}
|
|
|
|
|
|
function generatepost($size=850){
|
|
// Returns a string with a length between $size and $size*0.2
|
|
$size = rand(0.2*$size, $size);
|
|
$text = "Step 1: Untar the soure into the directory phpBB will run from. Seeing as you
|
|
are reading this file you have probably gotten that far. (Or if you are on a
|
|
different machine then your webserver FTP the resulting phpBB dir over to where
|
|
it will run from on the server. ie /www/yourdomain.com/phpBB)
|
|
|
|
Step 2: Edit config.php and change the following values:
|
|
|
|
The url fields my work for you if you're running phpBB from a domain
|
|
like this: http://www.phpbb.com/phpBB
|
|
|
|
However if you access phpBB like this: http://www.domain.com/~you/phpBB you
|
|
will have to change these values.
|
|
|
|
Also, config.php MUST be writeable by the webserver or the install will fail.
|
|
To set this on UNIX systems you can use chmod
|
|
ie: chmod 777 config.php (after the install if finsished set it back to 755
|
|
via chmod 755 config.php so it can't be written by anyone again.)";
|
|
$textsize = strlen($text);
|
|
$currentsize = 0;
|
|
// Add whole $text multiple times
|
|
while($currentsize < $size && $size-$currentsize <= $textsize){
|
|
$message .= $text;
|
|
$currentsize += $textsize;
|
|
}
|
|
// Add the remainder number of chars and return it.
|
|
$message .= substr($text, 0, $size-$currentsize);
|
|
|
|
// WARNING!! THIS IS NOT GOOD, THESE FUNCTIONS WILL ADD CHARACTERS!!!
|
|
return (nl2br(addslashes($message)));
|
|
}
|
|
|
|
|
|
function nrof($table){
|
|
global $db;
|
|
$sql = "SELECT count(*) AS counted FROM $table";
|
|
$result = $db->sql_query($sql);
|
|
$topics = $db->sql_fetchrow($result);
|
|
return $topics[counted];
|
|
}
|
|
|
|
|
|
function createuser($name){
|
|
global $db;
|
|
global $nr_of_users;
|
|
$username = $name;
|
|
$regdate = time();
|
|
$email = $username . "@phpbb.com";
|
|
$icq = "29317129";
|
|
$passwd = md5("test");
|
|
$occ = "";
|
|
$intrest = "";
|
|
$from = "";
|
|
$website = "http://www.phpBB.com/";
|
|
$sig = "To Bla, or Not to Bla";
|
|
$aim = "";
|
|
$sqlviewemail = "1";
|
|
$yim = "";
|
|
$msnm = "";
|
|
|
|
$userdata = get_userdata($username, $db);
|
|
if($userdata["username"]) {
|
|
print "Username '$username' has been already used...<br>\n";
|
|
return 1;
|
|
}
|
|
|
|
$sql = "INSERT INTO ".USERS_TABLE." (username, user_regdate, user_email, user_icq, user_password, user_occ, user_intrest, user_from, user_website, user_sig, user_aim, user_viewemail, user_yim, user_msnm) VALUES ('$username', '$regdate', '$email', '$icq', '$passwd', '$occ', '$intrest', '$from', '$website', '$sig', '$aim', '$sqlviewemail', '$yim', '$msnm')";
|
|
|
|
if (!$result = $db->sql_query($sql)) {
|
|
print "Couldn't create user $username in DB!<br>\n";
|
|
print "This is the sql statement:<br>\n$sql\n<br>\n";
|
|
return 1;
|
|
} else {
|
|
// print "User $username created!<br>\n";
|
|
$nr_of_users++;
|
|
// flush();
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
function get_userdata($username, $db) {
|
|
$sql = "SELECT * FROM ".USERS_TABLE." WHERE username = '$username' AND user_level != -1";
|
|
if(!$result = $db->sql_query($sql))
|
|
$userdata = array("error" => "1");
|
|
if(!$myrow = $db->sql_fetchrow($result))
|
|
$userdata = array("error" => "1");
|
|
|
|
return($myrow);
|
|
}
|
|
|
|
|
|
?>
|