Verzeichnisstruktur phpBB-3.0.0


Veröffentlicht
12.12.2007

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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

benchmark.php

Zuletzt modifiziert: 09.10.2024, 12:50 - Dateigröße: 11.53 KiB


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   
017  $phpbb_root_path = "../";
018  include($phpbb_root_path . 'extension.inc');
019  include($phpbb_root_path . 'common.'.$phpEx);
020  include($phpbb_root_path . 'includes/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   
055  // The script expects the ID's in the tables to sequential (1,2,3,4,5), 
056  // so no holes please (1,4,5,8)...
057  $nr_of_users  = nrof(USERS_TABLE);
058  $nr_of_cats   = nrof(CATEGORIES_TABLE);
059  $nr_of_forums = nrof(FORUMS_TABLE);
060  $nr_of_posts  = nrof(POSTS_TABLE);
061   
062  $u = $users;
063   
064  $starttime = microtime();
065   
066  $usercreationcount = 0;
067  while($users > 0)
068  {
069   
070      $name = "testuser_" . substr(md5(uniqid(rand())), 0, 10);
071      if (make_user($name))
072      {
073          $usercreationcount++;
074          $users--;
075      }
076      if (($usercreationcount % 500) == 0)
077      {
078          echo "status: $usercreationcount <br>\n";
079          flush();
080      }
081      
082  }
083   
084  if ($posts > 0)
085  {
086      filldb($posts);
087  }
088   
089  $endtime = microtime();
090   
091  if ($submit="" || !isset($submit))
092  {
093      ?>
094  Hello, welcome to this little phpBB Benchmarking script :)<p>
095   
096  At the moment there are:<br>
097   
098  <table>
099  <tr><td align="right"><?php echo $nr_of_users?></td><td>Users</td></tr>
100  <tr><td align="right"><?php echo $nr_of_forums?></td><td>Forums</td></tr>
101  <tr><td align="right"><?php echo $nr_of_posts?></td><td>Posts</td></tr>
102  </table>
103  <p>
104  What do you want to create?<p>
105   
106  <form method="get" action="<?php echo $PHP_SELF?>">
107  <input type="text" name="users" size="3"> Users<br>
108  <input type="text" name="posts" size="3"> Posts/topics (optional: post size in <input type="text" name="size" size="3"> bytes)<br>
109  <input type="submit" name="submit">
110  </form>
111   
112      <?php
113  } 
114  else 
115  {
116   
117      list ($starttime_msec,$starttime_sec) = explode(" ",$starttime);
118      list ($endtime_msec,$endtime_sec) = explode(" ",$endtime);
119      $timetaken_sec = ($endtime_sec+$endtime_msec) - ($starttime_sec+$starttime_msec);
120      print "<B>TIME TAKEN : ".$timetaken_sec."s</B><BR>\n"; 
121   
122      print "<p>\n<a href=\"$PHP_SELF\">Back to the overview page</a>\n";
123  }
124   
125   
126  function filldb($newposts)
127  {
128      global $nr_of_forums;
129      global $nr_of_users;
130    
131      $forum_topic_counts = array();
132    
133      for ($i = 1; $i <= $nr_of_forums; $i++)
134      {
135            $forum_topic_counts[$i] = get_topic_count($i);
136      }
137    
138      for($i = 0; $i < $newposts; $i++)
139      {
140          $userid   = rand(2, $nr_of_users - 1);
141          $forum    = rand(1,$nr_of_forums);
142          
143          if ((rand(0,30) < 1) || ($forum_topic_count[$forum] == 0))
144          {
145              // create a new topic 1 in 30 times (or when there are none);
146              $topic = make_topic($userid, "Testing topic $i", $forum);
147              $forum_topic_count[$forum]++;
148          } 
149          else 
150          {
151              // Otherwise create a reply(posting) somewhere.
152              $topic = get_smallest_topic($forum);
153              create_posting($userid, $topic, $forum, "reply");
154          }
155          
156          if (($i % 1000) == 0)
157          {
158              echo "status: $i <br>";
159              flush();
160          }
161       
162      }
163  }
164   
165   
166  function get_smallest_topic($forum_id)
167  {
168      global $db;
169      
170      $sql = "SELECT topic_id
171          FROM " . TOPICS_TABLE . "
172          WHERE (forum_id = $forum_id)
173          ORDER BY topic_replies ASC LIMIT 1";
174      if($result = $db->sql_query($sql))
175      {
176          $row = $db->sql_fetchrow($result);
177          $topic_id = $row['topic_id'];
178   
179          unset($result);
180          unset($row);
181          return $topic_id;
182      }
183      else
184      {
185          message_die(GENERAL_ERROR, "Couldn't get smallest topic.", "", __LINE__, __FILE__, $sql);
186      }
187      
188  }
189   
190   
191  function get_topic_count($forum_id)
192  {
193      global $db;
194      
195      $sql = "SELECT forum_topics
196          FROM " . FORUMS_TABLE . "
197          WHERE (forum_id = $forum_id)";
198      if($result = $db->sql_query($sql))
199      {
200          $row = $db->sql_fetchrow($result);
201          $topic_count = $row['forum_topics'];
202   
203          unset($result);
204          unset($row);
205          return $topic_count;
206      }
207      else
208      {
209          message_die(GENERAL_ERROR, "Couldn't get topic count.", "", __LINE__, __FILE__, $sql);
210      }
211      
212  }
213   
214   
215  function make_topic($user_id, $subject, $forum_id)
216  {
217      global $db;
218      $topic_type = POST_NORMAL;
219      $topic_vote = 0;
220      $current_time = time();
221      
222      $sql  = "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote)
223              VALUES ('$subject', $user_id$current_time$forum_id" . TOPIC_UNLOCKED . "$topic_type$topic_vote)";
224   
225      if( $result = $db->sql_query($sql, BEGIN_TRANSACTION) )
226      {
227          $new_topic_id = $db->sql_nextid();
228      }
229      else
230      {
231          message_die(GENERAL_ERROR, "Error inserting data into topics table", "", __LINE__, __FILE__, $sql);
232      }
233      
234      create_posting($user_id, $new_topic_id, $forum_id);
235      
236      return $new_topic_id;
237  }
238   
239   
240   
241  function create_posting($userid, $topic_id, $forum, $mode='newtopic')
242  {
243      $message = generatepost();
244   
245      return make_post($topic_id, $forum, $userid, "", $message, $mode);
246   
247  }
248   
249   
250   
251  function make_post($new_topic_id, $forum_id, $user_id, $post_username, $text, $mode='newtopic')
252  {
253      global $db;
254      $current_time = time();
255      $user_ip = "ac100202";
256      $bbcode_on = 1;
257      $html_on = 1;
258      $smilies_on = 1;
259      $attach_sig = 1;
260      $bbcode_uid = make_bbcode_uid();
261      
262      $post_subject = 'random subject';
263      
264      $post_message = prepare_message($text, $html_on, $bbcode_on, $smilies_on, $bbcode_uid);    
265      
266      $sql = "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, attach_id, icon_id, post_username, post_time, poster_ip, post_approved, bbcode_uid, enable_bbcode, enable_html, enable_smilies, enable_sig, post_subject, post_text)
267          VALUES ($new_topic_id$forum_id$user_id, 0, 0, '$post_username', $current_time, '$user_ip', 1, '$bbcode_uid', $bbcode_on$html_on$smilies_on$attach_sig, '$post_subject', '$post_message')";
268      $result = $db->sql_query($sql);
269      
270      if ($result)
271      {
272          $new_post_id = $db->sql_nextid();
273      
274          $sql = "UPDATE " . TOPICS_TABLE . "
275              SET topic_last_post_id = $new_post_id";
276          if($mode == "reply")
277          {
278              $sql .= ", topic_replies = topic_replies + 1 ";
279          }
280          $sql .= " WHERE topic_id = $new_topic_id";
281   
282          if($db->sql_query($sql))
283          {
284              $sql = "UPDATE " . FORUMS_TABLE . "
285                  SET forum_last_post_id = $new_post_id, forum_posts = forum_posts + 1";
286              if($mode == "newtopic")
287              {
288                  $sql .= ", forum_topics = forum_topics + 1";
289              }
290              $sql .= " WHERE forum_id = $forum_id";
291      
292              if($db->sql_query($sql))
293              {
294                  $sql = "UPDATE " . USERS_TABLE . "
295                      SET user_posts = user_posts + 1
296                      WHERE user_id = " . $user_id;
297      
298                  if($db->sql_query($sql, END_TRANSACTION))
299                  {
300                      // SUCCESS.
301                      return true;
302                  }
303                  else
304                  {
305                      message_die(GENERAL_ERROR, "Error updating users table", "", __LINE__, __FILE__, $sql);
306                  }
307              }
308              else
309              {
310                  message_die(GENERAL_ERROR, "Error updating forums table", "", __LINE__, __FILE__, $sql);
311              }
312          }
313          else
314          {
315              // Rollback
316              if($db->sql_layer == "mysql")
317              {
318                  $sql = "DELETE FROM " . POSTS_TABLE . "
319                      WHERE post_id = $new_post_id";
320                  $db->sql_query($sql);
321              }
322              message_die(GENERAL_ERROR, "Error updating topics table", "", __LINE__, __FILE__, $sql);
323          }
324      }
325      else
326      {
327          message_die(GENERAL_ERROR, "Error inserting data into posts table", "", __LINE__, __FILE__, $sql);
328      }    
329  }
330   
331   
332  function generatepost($size=850)
333  {
334     global $bigass_text;
335     // Returns a string with a length between $size and $size*0.2
336     $size = rand(0.2*$size, $size);
337     
338     $textsize = strlen($bigass_text);
339     $currentsize = 0;
340     // Add whole $text multiple times
341     while($currentsize < $size && $size-$currentsize <= $textsize)
342     {
343        $message .= $bigass_text;
344        $currentsize += $textsize;
345     }
346     // Add the remainder number of chars and return it.
347     $message .= substr($bigass_text, 0, $size-$currentsize);
348   
349     return (addslashes($message));
350  }
351     
352        
353  function nrof($table)
354  {
355      global $db;
356      $sql = "SELECT count(*) AS counted FROM $table";
357      $result = $db->sql_query($sql);
358      $topics = $db->sql_fetchrow($result);
359      return $topics[counted];
360  }
361   
362   
363  function make_user($username)
364  {
365      global $db, $board_config;
366   
367      $password = md5("benchpass");
368      $email = "nobody@localhost";
369      $icq = "12345678";
370      $website = "http://www.phpbb.com";
371      $occupation = "phpBB tester";
372      $location = "phpBB world hq";
373      $interests = "Eating, sleeping, living, and breathing phpBB";
374      $signature = "$username: phpBB tester.";
375      $signature_bbcode_uid = "";
376      $avatar_filename = "";
377      $viewemail = 0;
378      $aim = 0;
379      $yim = 0;
380      $msn = 0;
381      $attachsig = 1;
382      $allowsmilies = 1;
383      $allowhtml = 1;
384      $allowbbcode = 1;
385      $allowviewonline = 1;
386      $notifyreply = 0;
387      $notifypm = 0;
388      $user_timezone = $board_config['board_timezone'];
389      $user_dateformat = $board_config['default_dateformat'];
390      $user_lang = $board_config['default_lang'];
391      $user_style = $board_config['default_style'];
392   
393   
394      $sql = "SELECT MAX(user_id) AS total
395          FROM " . USERS_TABLE;
396      if($result = $db->sql_query($sql))
397      {
398          $row = $db->sql_fetchrow($result);
399          $new_user_id = $row['total'] + 1;
400   
401          unset($result);
402          unset($row);
403      }
404      else
405      {
406          message_die(GENERAL_ERROR, "Couldn't obtained next user_id information.", "", __LINE__, __FILE__, $sql);
407      }
408   
409      $sql = "SELECT MAX(group_id) AS total
410          FROM " . GROUPS_TABLE;
411      if($result = $db->sql_query($sql))
412      {
413          $row = $db->sql_fetchrow($result);
414          $new_group_id = $row['total'] + 1;
415   
416          unset($result);
417          unset($row);
418      }
419      else
420      {
421          message_die(GENERAL_ERROR, "Couldn't obtained next user_id information.", "", __LINE__, __FILE__, $sql);
422      }
423   
424   
425      $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_allowsmilies, 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)
426          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, ";
427   
428      
429      $sql .= "1, '')";
430      
431      if($result = $db->sql_query($sql, BEGIN_TRANSACTION))
432      {
433          $sql = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_description, group_single_user, group_moderator)
434              VALUES ($new_group_id, '', 'Personal User', 1, 0)";
435          if($result = $db->sql_query($sql))
436          {
437              $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
438                  VALUES ($new_user_id$new_group_id, 0)";
439              if($result = $db->sql_query($sql, END_TRANSACTION))
440              {
441                  
442                  // SUCCESS.
443                  return true;
444              }
445              else
446              {
447                  message_die(GENERAL_ERROR, "Couldn't insert data into user_group table", "", __LINE__, __FILE__, $sql);
448              }
449          }
450          else
451          {
452              message_die(GENERAL_ERROR, "Couldn't insert data into groups table", "", __LINE__, __FILE__, $sql);
453          }
454      }
455      else
456      {
457          message_die(GENERAL_ERROR, "Couldn't insert data into users table", "", __LINE__, __FILE__, $sql);
458      }
459   
460  }
461   
462  ?>