Verzeichnisstruktur phpBB-2.0.0
- Veröffentlicht
- 03.04.2002
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
benchmark.php
001 <?php
002
003 //
004 // Security message:
005 //
006 // This script is potentially dangerous.
007 // Remove or comment the next line (die(".... ) to enable this script.
008 // Do NOT FORGET to either remove this script or disable it after you have used it.
009 //
010 die("Please read the first lines of this script for instructions on how to enable it");
011
012 //
013 // Do not change anything below this line.
014 //
015
016 define('IN_PHPBB', true);
017 $phpbb_root_path = "../";
018 include($phpbb_root_path . 'extension.inc');
019 include($phpbb_root_path . 'common.'.$phpEx);
020 include($phpbb_root_path . 'includes/functions_post.'.$phpEx);
021 include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
022
023 srand ((double) microtime() * 1000000);
024 set_time_limit(240*60);
025
026 // Here's the text we stick in posts..
027 $bigass_text = '
028 phpBB BBCode test suite v0.0.2
029 auto-linkification:
030 http://something.com
031 www.something.com
032 nate@phpbb.com
033 http://something.com/foo.php?this=that&theother=some%20encoded%20string is a link.
034 [code]
035 Simple code block with some <html> <tags>.
036 [/code]
037 [b]bolded[/b], [i]italic[/i]
038 [email]james@totalgeek.org[/email]
039 [url=http://www.totalgeek.org]totalgeek.org[/url]
040 [url]www.totalgeek.org[/url]
041 [list]
042 [*] This is the first bulleted item.
043 [*] This is the second bulleted item.
044 [/list]
045 [list=A]
046 [*] This is the first bulleted item.
047 [*] This is the second bulleted item.
048 [/list]
049 [quote]
050 And a quote!
051 [/quote]
052 ';
053
054 $users = intval($HTTP_GET_VARS['users']);
055 $posts = intval($HTTP_GET_VARS['posts']);
056 $size = intval($HTTP_GET_VARS['size']);
057
058 // The script expects the ID's in the tables to sequential (1,2,3,4,5),
059 // so no holes please (1,4,5,8)...
060 $nr_of_users = nrof(USERS_TABLE);
061 $nr_of_cats = nrof(CATEGORIES_TABLE);
062 $nr_of_forums = nrof(FORUMS_TABLE);
063 $nr_of_posts = nrof(POSTS_TABLE);
064
065 $u = $users;
066
067 $starttime = microtime();
068
069 $usercreationcount = 0;
070 while($users > 0)
071 {
072
073 $name = "testuser_" . substr(md5(uniqid(rand())), 0, 10);
074 if (make_user($name))
075 {
076 $usercreationcount++;
077 $users--;
078 }
079 if (($usercreationcount % 500) == 0)
080 {
081 echo "status: $usercreationcount <br>\n";
082 flush();
083 }
084
085 }
086
087 if ($posts > 0)
088 {
089 filldb($posts);
090 }
091
092 $endtime = microtime();
093
094 $submit = (isset($HTTP_GET_VARS['submit'])) ? true : false;
095
096 if (!$submit)
097 {
098 ?>
099 Hello, welcome to this little phpBB Benchmarking script :)<p>
100
101 At the moment there are:<br>
102
103 <table>
104 <tr><td align="right"><?php echo $nr_of_users?></td><td>Users</td></tr>
105 <tr><td align="right"><?php echo $nr_of_forums?></td><td>Forums</td></tr>
106 <tr><td align="right"><?php echo $nr_of_posts?></td><td>Posts</td></tr>
107 </table>
108 <p>
109 What do you want to create?<p>
110
111 <form method="get" action="<?php echo $PHP_SELF?>">
112 <input type="text" name="users" size="3"> Users<br>
113 <input type="text" name="posts" size="3"> Posts/topics (optional: post size in <input type="text" name="size" size="3"> bytes)<br>
114 <input type="submit" name="submit">
115 </form>
116
117 <?php
118 }
119 else
120 {
121
122 list ($starttime_msec,$starttime_sec) = explode(" ",$starttime);
123 list ($endtime_msec,$endtime_sec) = explode(" ",$endtime);
124 $timetaken_sec = ($endtime_sec+$endtime_msec) - ($starttime_sec+$starttime_msec);
125 print "<B>TIME TAKEN : ".$timetaken_sec."s</B><BR>\n";
126
127 print "<p>\n<a href=\"$PHP_SELF\">Back to the overview page</a>\n";
128 }
129
130
131 function filldb($newposts)
132 {
133 global $nr_of_forums;
134 global $nr_of_users;
135
136 $forum_topic_counts = array();
137
138 for ($i = 1; $i <= $nr_of_forums; $i++)
139 {
140 $forum_topic_counts[$i] = get_topic_count($i);
141 }
142
143 for($i = 0; $i < $newposts; $i++)
144 {
145 $userid = rand(2, $nr_of_users - 1);
146 $forum = rand(1,$nr_of_forums);
147
148 if ((rand(0,30) < 1) || ($forum_topic_count[$forum] == 0))
149 {
150 // create a new topic 1 in 30 times (or when there are none);
151 $topic = make_topic($userid, "Testing topic $i", $forum);
152 $forum_topic_count[$forum]++;
153 }
154 else
155 {
156 // Otherwise create a reply(posting) somewhere.
157 $topic = get_smallest_topic($forum);
158 create_posting($userid, $topic, $forum, "reply");
159 }
160
161 if (($i % 1000) == 0)
162 {
163 echo "status: $i <br>";
164 flush();
165 }
166
167 }
168 }
169
170
171 function get_smallest_topic($forum_id)
172 {
173 global $db;
174
175 $sql = "SELECT topic_id
176 FROM " . TOPICS_TABLE . "
177 WHERE (forum_id = $forum_id)
178 ORDER BY topic_replies ASC LIMIT 1";
179 if($result = $db->sql_query($sql))
180 {
181 $row = $db->sql_fetchrow($result);
182 $topic_id = $row['topic_id'];
183
184 unset($result);
185 unset($row);
186 return $topic_id;
187 }
188 else
189 {
190 message_die(GENERAL_ERROR, "Couldn't get smallest topic.", "", __LINE__, __FILE__, $sql);
191 }
192
193 }
194
195
196 function get_topic_count($forum_id)
197 {
198 global $db;
199
200 $sql = "SELECT forum_topics
201 FROM " . FORUMS_TABLE . "
202 WHERE (forum_id = $forum_id)";
203 if($result = $db->sql_query($sql))
204 {
205 $row = $db->sql_fetchrow($result);
206 $topic_count = $row['forum_topics'];
207
208 unset($result);
209 unset($row);
210 return $topic_count;
211 }
212 else
213 {
214 message_die(GENERAL_ERROR, "Couldn't get topic count.", "", __LINE__, __FILE__, $sql);
215 }
216
217 }
218
219
220 function make_topic($user_id, $subject, $forum_id)
221 {
222 global $db;
223 $topic_type = POST_NORMAL;
224 $topic_vote = 0;
225 $current_time = time();
226
227 $sql = "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote)
228 VALUES ('$subject', $user_id, $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote)";
229
230 if( $result = $db->sql_query($sql) )
231 {
232 $new_topic_id = $db->sql_nextid();
233 }
234 else
235 {
236 message_die(GENERAL_ERROR, "Error inserting data into topics table", "", __LINE__, __FILE__, $sql);
237 }
238
239 create_posting($user_id, $new_topic_id, $forum_id);
240
241 return $new_topic_id;
242 }
243
244
245
246 function create_posting($userid, $topic_id, $forum, $mode = 'newtopic')
247 {
248 $message = generatepost();
249
250 return make_post($topic_id, $forum, $userid, "", $message, $mode);
251 }
252
253 function make_post($new_topic_id, $forum_id, $user_id, $post_username, $text, $mode = 'newtopic')
254 {
255 global $db;
256 $current_time = time();
257 $user_ip = "ac100202";
258 $bbcode_on = 1;
259 $html_on = 1;
260 $smilies_on = 1;
261 $attach_sig = 1;
262 $bbcode_uid = make_bbcode_uid();
263
264 $post_subject = 'random subject';
265
266 $post_message = prepare_message($text, $html_on, $bbcode_on, $smilies_on, $bbcode_uid);
267
268 $sql = "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig)
269 VALUES ($new_topic_id, $forum_id, $user_id, '$post_username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $attach_sig)";
270 $result = $db->sql_query($sql);
271
272 if($result)
273 {
274 $new_post_id = $db->sql_nextid();
275
276 $sql = "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text)
277 VALUES ($new_post_id, '$post_subject', '$bbcode_uid', '$post_message')";
278
279 if($db->sql_query($sql))
280 {
281 $post_data = array();
282 $post_data['first_post'] = false;
283 $post_data['last_post'] = true;
284
285 $sql = "SELECT SUM(post_id) as total FROM " . POSTS_TABLE . " WHERE topic_id = " . $new_topic_id;
286 $result = $db->sql_query($sql);
287 $row = $db->sql_fetchrow($result);
288 $total = intval($row['total']);
289
290 if ($total == 1)
291 {
292 $post_data['first_post'] = true;
293 }
294
295 $sql = "SELECT forum_last_post_id
296 FROM " . FORUMS_TABLE . "
297 WHERE forum_id = $forum_id";
298 $result = $db->sql_query($sql);
299 $row = $db->sql_fetchrow($result);
300 $post_data['last_topic'] = ( $row['forum_last_post_id'] == $new_post_id ) ? true : false;
301
302 update_post_stats($mode, $post_data, $forum_id, $new_topic_id, $new_post_id, $user_id);
303 }
304 else
305 {
306 // Rollback
307 if(SQL_LAYER == "mysql")
308 {
309 $sql = "DELETE FROM " . POSTS_TABLE . "
310 WHERE post_id = $new_post_id";
311 $db->sql_query($sql);
312 }
313 message_die(GENERAL_ERROR, "Error inserting data into posts text table", "", __LINE__, __FILE__, $sql);
314 }
315 }
316 else
317 {
318 message_die(GENERAL_ERROR, "Error inserting data into posts table", "", __LINE__, __FILE__, $sql);
319 }
320 }
321
322
323 function generatepost($size = 850)
324 {
325 global $bigass_text;
326 // Returns a string with a length between $size and $size*0.2
327 $size = rand(0.2*$size, $size);
328
329 $textsize = strlen($bigass_text);
330 $currentsize = 0;
331 // Add whole $text multiple times
332 while($currentsize < $size && $size-$currentsize <= $textsize)
333 {
334 $message .= $bigass_text;
335 $currentsize += $textsize;
336 }
337 // Add the remainder number of chars and return it.
338 $message .= substr($bigass_text, 0, $size-$currentsize);
339
340 return (addslashes($message));
341 }
342
343
344 function nrof($table)
345 {
346 global $db;
347 $sql = "SELECT count(*) AS counted FROM $table";
348 $result = $db->sql_query($sql);
349 $topics = $db->sql_fetchrow($result);
350 return $topics[counted];
351 }
352
353
354 function make_user($username)
355 {
356 global $db, $board_config;
357
358 $password = md5("benchpass");
359 $email = "nobody@localhost";
360 $icq = "12345678";
361 $website = "http://www.phpbb.com";
362 $occupation = "phpBB tester";
363 $location = "phpBB world hq";
364 $interests = "Eating, sleeping, living, and breathing phpBB";
365 $signature = "$username: phpBB tester.";
366 $signature_bbcode_uid = "";
367 $avatar_filename = "";
368 $viewemail = 0;
369 $aim = 0;
370 $yim = 0;
371 $msn = 0;
372 $attachsig = 1;
373 $allowsmilies = 1;
374 $allowhtml = 1;
375 $allowbbcode = 1;
376 $allowviewonline = 1;
377 $notifyreply = 0;
378 $notifypm = 0;
379 $user_timezone = $board_config['board_timezone'];
380 $user_dateformat = $board_config['default_dateformat'];
381 $user_lang = $board_config['default_lang'];
382 $user_style = $board_config['default_style'];
383
384
385 $sql = "SELECT MAX(user_id) AS total
386 FROM " . USERS_TABLE;
387 if($result = $db->sql_query($sql))
388 {
389 $row = $db->sql_fetchrow($result);
390 $new_user_id = $row['total'] + 1;
391
392 unset($result);
393 unset($row);
394 }
395 else
396 {
397 message_die(GENERAL_ERROR, "Couldn't obtained next user_id information.", "", __LINE__, __FILE__, $sql);
398 }
399
400 $sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
401 VALUES ($new_user_id, '$username', " . time() . ", '$password', '$email', '$icq', '$website', '$occupation', '$location', '$interests', '$signature', '$signature_bbcode_uid', '$avatar_filename', $viewemail, '$aim', '$yim', '$msn', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $user_timezone, '$user_dateformat', '$user_lang', $user_style, 0, 1, ";
402
403
404 $sql .= "1, '')";
405
406 if($result = $db->sql_query($sql, BEGIN_TRANSACTION))
407 {
408 $sql = "INSERT INTO " . GROUPS_TABLE . " (group_name, group_description, group_single_user, group_moderator)
409 VALUES ('', 'Personal User', 1, 0)";
410 if($result = $db->sql_query($sql))
411 {
412 $group_id = $db->sql_nextid();
413
414 $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
415 VALUES ($new_user_id, $group_id, 0)";
416 if($result = $db->sql_query($sql, END_TRANSACTION))
417 {
418
419 // SUCCESS.
420 return true;
421 }
422 else
423 {
424 message_die(GENERAL_ERROR, "Couldn't insert data into user_group table", "", __LINE__, __FILE__, $sql);
425 }
426 }
427 else
428 {
429 message_die(GENERAL_ERROR, "Couldn't insert data into groups table", "", __LINE__, __FILE__, $sql);
430 }
431 }
432 else
433 {
434 message_die(GENERAL_ERROR, "Couldn't insert data into users table", "", __LINE__, __FILE__, $sql);
435 }
436
437 }
438
439
440
441
442
443 ?>