Mailinglisten-Archive |
Aloha, > ---------- > Von: Christian Hofmann[SMTP:hofmann_(at)_privatesponsor.de] >=20 > ich bin auf der Suche nach einer M=F6glichkeit > wie PHP-Programme IDs bekommen > (wieso schreibe ich immer alles so kompliziert :-() >=20 > Folgendes: >=20 > Es gibt laufende ID-Nummern. > Nun wird von mehreren Servern (PHP-Scripten) nach einer ID > gefragt. Diese ID darf niemals die gleiche sein und muss > immer erh=F6ht werden. >=20 > Fr=FCher lief (als es noch weniger Zugriffe waren) folgendes = PHP-Script: >=20 > 1. Aktuelle ID aus der Datenbank holen, > 2. ID erh=F6hen > 3. Dem anfragenden Script die ID mitteilen. >=20 tja, so geht das leider nur, wenn immer nur einer auf die Daten = zugreift. (Klassischer Designfehler). So gehts: 1.) ID-Tabelle read/write locken 2.) ID aus der DB holen 3.) ID + 1 in die DB zur=FCckschreiben 4.) ID-Tabelle unlocken. Schritte 1-4 Sollten alle direkt hintereinander ausgef=FChrt werden, = damit die Lockzeit nur ganz kurz ist (alle andern Seiten m=FCssen n=E4mlich = warten, wenn die DB gelockt ist). > Gibt es denn eine Art Token, dass man > vergeben kann (ohne das =FCber eine Datenbank oder Datei > zu machen)? Damit dann wirklich ein Script/Programm > nach dem anderen abgearbeitet wird? >=20 Du kannst dir mal das Verfahren anschaun, mit dem die phplib die Session-ID erzeugt, aber selbst das k=F6nnte theoretisch 2 x die = gleiche ID erzeugen (ist mir aber bis jetzt noch nicht passiert ;) Diese sind aber alles andere als fortlaufend. > Ich bin f=FCr jeden Tipp sehr dankbar. > Ich gr=FCble hier schon lange rum und denke, > dass ich wohl meine JAVA Kenntnisse vertiefen > muss, da es keine L=F6sung f=FCr PHP gibt, oder etwas doch? :-) >=20 Die Programmiersprache ist hier wurscht. Es geht doch darum eine eindeutige, fortlaufende ID zu erzeugen - und das ist ein Algorithmus der sich am einfachsten mit einer DB erledigen l=E4sst. Wenn du das =FCber Dateien machst, musst du die Locks auch auf Dateiebene setzen, was bestimmt auch nicht schneller ist. Viele Gr=FC=DFe, Mathias
php::bar PHP Wiki - Listenarchive