MyBB.de Forum
PN ID Increment - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html)
+--- Forum: MyBB 1.2.x und älter (https://www.mybb.de/forum/forum-27.html)
+---- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-36.html)
+---- Thema: PN ID Increment (/thread-6586.html)



PN ID Increment - JSchu - 28.07.2007

Herzliche grüsse an alle erstmal und vielen dank für die Möglichkeit hier fragen zu können.

Nun ich frage mich etwas, was grosse Foren betrifft die über einen langen Zeitraum laufen würden. Ich hatte letztens mal etwas in der Datenbank rumgestöbert und dabei ist mir aufgefallen das die ID der PN ein normaler integer ist (also max. +2147483647) nun habe ich von PHP nicht gerade viel Ahnung und kann dadurch nicht selbst im Code prüfen was passiert wenn man diesen Wert nun doch irgendwann mal erreicht.

Ich gehe mal davon aus dass ich sämtliche PN's löschen muss und den Wert in der Datenbank selbst zurücksetzen muss, oder? Bitte komm mir jetzt keiner mit: Ähh, das wird eh nie erreicht Toungue

Grüsse


RE: PN ID Increment - Michael - 28.07.2007

Naja, das sind immer noch über zwei Milliarden mögliche Nachrichten. Dass diese Anzahl erreicht wird ist doch schon sehr unwahrscheinlich.

Falls es aber doch soweit kommen sollte: Man könnte die Nachrichten per Skript neu durchnummerieren lassen, da ja gelöschte Nachrichten usw. Nummern wegnehmen, die eigentlich wieder benutzt werden können. Es wäre auch möglich einfach den Typ des Datenfeldes zu ändern, also von Integer zu Varchar, Text o.ä.


RE: PN ID Increment - JSchu - 28.07.2007

Meines wissens kann man Chars, Strings usw nicht direkt inkrementieren zumindest nicht ohne vorherige implizite Typumwandlung und selbst dann bin ich an den Wertebereich des Ursprungstyps gebunden, da der Wert ja erstmal irgendwo herkommen muss. Ein sauberes Skript zu schreiben trau ich mir in PHP nicht zu. Ich werds mal mit nem BigInt probieren aber das Problem bleibt. Ich habe aber irgendwo gelesen das wenn man in PHP die +2147483647 übersteigt dann ohne exception bei den negativen werten fortgesetzt wird. Dadurch verdoppelt sich ja nochmal der Wert und eindeutig ist die ID ja auch.

Und das man dies schon als Bug einstufen kann ist euch wohl auch klar, oder? Viele Entwickler (mich eingeschlossen) haben vor vielen Jahren genauso gedacht. Heute haben wir dadurch Probleme.

Danke.


RE: PN ID Increment - Don Carlos - 28.07.2007

JSchu schrieb:Meines wissens kann man Chars, Strings usw nicht direkt inkrementieren zumindest nicht ohne vorherige implizite Typumwandlung

Eine implizite Typumwandlung geschieht im Hintergrund und bedarf keinerlei zusätlichen Code. Was du meinst ist eine explizite Typumwandlung (casten). Wink


RE: PN ID Increment - JSchu - 28.07.2007

Das ist mir schon klar und ich denke du hast nicht ganz verstanden wie ich das gemeint habe. Ich wollte damit sgaen, das mir eine ändereung nach Char, String etc. nichts bringen wird, da das System von selbst, also implizit, den typen konvertieren können muss.


RE: PN ID Increment - Don Carlos - 28.07.2007

Ach so...

Ich bin mit PHP auch alles andere als bewandert, aber in anderen Sprachen trifft das zu, dass der Integer, wenn er überläuft, automatisch in den kleinsten, anzumehmenden Wert "springt". Wäre in diesem Fall −2.147.483.648. Eine Exception wird bei sowas nie gewurfen, es sei denn, die Werte wären in einem Array.


RE: PN ID Increment - JSchu - 28.07.2007

Wo du recht hast, hast du Recht. Big Grin