2001-03-21 23:37:01 +00:00
< ?
2001-03-22 23:10:40 +00:00
include ( '../extension.inc' );
include ( '../config.' . $phpEx );
include ( '../includes/constants.' . $phpEx );
include ( '../functions/functions.' . $phpEx );
include ( '../includes/db.' . $phpEx );
2001-03-21 23:37:01 +00:00
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 );
}
?>