Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
PN ID Increment
#1
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
#2
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.ä.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#3
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.
#4
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
#5
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.
#6
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.
#7
Wo du recht hast, hast du Recht. Big Grin