phpbar.de logo

Mailinglisten-Archive

Re: Gleichzeitiger Zugriff auf Mysql im WIN-Netz makes trouble
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Gleichzeitiger Zugriff auf Mysql im WIN-Netz makes trouble



Hi Freunde,

> Wie ich dir schon mal in Worten beschrieben habe, solltest
> du überprüfen ob die Locks gesetzt sind.
>
> $lock = "LOCK TABLES user WRITE offer READ";
>
> scheint mir da nicht ganz das passende zu sein.
Wieso ? steht doch so im manual ... warum stehts da, wenns nicht funzt?
um mich zu verwirren ? um mich zu ärgern ? hmmm...

> Im Manual gibts noch:
>
> GET_LOCK(str,timeout)
> RELEASE_LOCK(str)
yo,gelesen, aber irgendwie versteh ich nicht, was für ein
string ich übergeben soll. Welchen Bezug hat der String?
manual sagt:
"It blocks requests by other clients for locks with the same name; "
aja, also gebe ich einfach den Locks irgendeinen Namen ...,aj?


> Ich denke mal daß dein Problem auch daraus resultiert:
nö - oder doch ---

> - Du änderst die Tabelle über ein HTML - Formular.
> - Du lockst die Tabelle beim lesen der Werte,
unlock
>- Du lockst die Tabelle beim schreiben der Werte.
unlock
ja, so ist der ablauf.

>
> Zwischen beidem ist die Tabelle nicht gelockt (geht ei-
> gentlich auch nicht).
genau.

> Abhilfe geht ungefähr so (So mach ich das :)
ne. leider nicht.

Das merkwürdige ist ja, das die Überprüfungsroutine
einfach ausgehebelt wird. Nochmals (ich habe es jetzt in 4
Dateien aufgesplittet):
1. Datei: Forumlar, in das Daten eingetragen wird. Submit-->
2. Datei: Daten kommen an. Select auf 4 Datenrows, die 4
werden ausgelesen ---> Überprüfung auf doppelten Eintrag
mit den 4 ausgewählten Daten aus Formular
--ja, schon da-->
               -- Datei 3: Leider schon eingetragen
--nein, nicht vorhanden-->
              -- Datei 4: schreiben der Daten in die DB,
                "Erfolgreich eingetragen"-Print, Email an Eintragenden.
Fertig.

Wenn ich alleine am Rechner sitze, und kein anderer auf die Datei(en)
zugreift funzt alles. Sobald zwei User (ungefähr) gleichzeitig auf die
Datei(en) zugreifen, wird alles, was in Datei 2 passiert
anscheinend ausgehebelt. Es scheint keine Überprüfung mehr
stattzufinden,
da der User mit identischen daten einfach nochmals eingetragen wird.

So weit so blöd. Da das so passiert bleiben zwei Möglichkeiten:
1. Zwei User greifen (ungefähr) gleichzeitig auf die SELECT-Anweisung
zu,was die DB verwirrt, und keiner der User den SELECT erfolgreich
vollführt. Keine Daten ---> ?? Dann dürfte er eigentlich nicht
reinschreiben, da "keine Daten" nicht gleich den FormularDaten sind, und
somit die Überprüfungsroutine den User zurückgehen lassen würde.
---> kein Eintrag. Komisch ist jedoch, das der User entweder auf
das Formular zurückgeworfen wird, oder den "Erfolg-Screen" bekommt.
Nicht jedoch den "Leider schon eingetragen-Screen".

2. Zwei User greifen (ungefähr) zeitgleich auf die INSERT INTO-
Anweisung zu. Aber da kommt der User doch gar nicht hin, weil
er nicht erfolgreich valdiert werden konnte .... tsts.

irgendwie übersteigt das meinen Horizont. Gibts ne dritte Möglichkeit,
die ich vielleicht vergessen habe?

langsam echt am verzweifeln,

-Armin



---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive