phpbar.de logo

Mailinglisten-Archive

AW: [php] Problem: eine Art Token?

AW: [php] Problem: eine Art Token?

Gloss Mathias php_(at)_phpcenter.de
Mon, 19 Mar 2001 12:37:44 +0100


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