Beiträge: 5
Themen: 1
Registriert seit: 28.07.2007
28.07.2007, 02:56
(Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2007, 03:06 von JSchu.)
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
Grüsse
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
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
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 5
Themen: 1
Registriert seit: 28.07.2007
28.07.2007, 19:29
(Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2007, 19:42 von JSchu.)
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.
Beiträge: 5
Themen: 1
Registriert seit: 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.
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.
Beiträge: 5
Themen: 1
Registriert seit: 28.07.2007
Wo du recht hast, hast du Recht.