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





Armin Steiner wrote:

Ich wuerde sagen, das du die Tabelle auch beim select einen write-lock
spendieren musst. Zu dem Zeitpunkt waere es naemlich moeglich, das ein anderer
direkt nach dem select einen insert fahert....
deine Transaktion umfasst folgendes:
1. lock write
2. select
3. evtl insert
4. unlock

du machst locks um jeden sql-query, das bringt wohl nix...

--Andi

> 
> Ok, erstmal danke für eure Tips,
> 
> aber fragen bleiben trotzdem:
> Ich versuche nun, die Datenbank beim Vorgang mittels LOCK
> vor gleichzeitigen  Einträgen zu schützen (Weil, wir erinnern uns,
> wenn der gleichzeitige Zugriff nicht verhindert wird, sind
> doppelte Einträge möglich, und das kann die Datenbank dann
> in tiefe Sinnkrisen stürzen :-)). Das sieht dann so bei mir aus:
> 
> Daten für die Überprüfungsroutine zu holen:
> -------------- cut ---------------------------------
> $lock = "LOCK TABLES user READ offer READ";
> $unlock = "UNLOCK TABLES";
> $sql = "SELECT name,vorname,email,login FROM user";
> 
> db = _(at)_mysql_connect($host, $user) OR DIE("There appeared an error(1),
> please try again.");
> _(at)_mysql_select_db($database,$db) OR DIE ("There appeared an error(2),
> please try again.");
> $getlock = mysql_query($lock,$db);
> $result = mysql_query($sql,$db);
> $getunlock = mysql_query($unlock,$db);
> ----------------------------------------------------
> 
> bzw.
> 
> Für den Fall, dass Überprüfung erfolgreich war: Eintrag:
> -------------- cut ---------------------------------
> $lock = "LOCK TABLES user WRITE offer READ";
> $unlock = "UNLOCK TABLES";
> $sql = INSERT INTO user VALUES
> ('$name','$vorname','$strasse','$strnr','$ort','$plz','$telnrvor','$teln
> rnach','$faxnrvor'
> ,'$faxnrnach','$email','$passwd','$land','$login','$anrede','$bbue')";
> 
> db = _(at)_mysql_connect($host, $user) OR DIE("There appeared an error(1),
> please try again.");
> _(at)_mysql_select_db($database,$db) OR DIE ("There appeared an error(2),
> please try again.");
> $getlock = mysql_query($lock,$db);
> $result = mysql_query($sql,$db);
> $getunlock = mysql_query($unlock,$db);
> ----------------------------------------------------
> 
> schade nur, das es nicht funktioniert. Doppelte Einträge sind immer
> noch möglich .... grmble.
> 
> Wo liegt der Fehler ? Oder wird der LOCK auf Windows nicht
> unterstützt ?
> 
> Was geben $getlock und $getunlock eigentlich zurück ? (bzw.
> was sollten sie bei Erfolg/Misserfolg zurückgeben?). Ich habe das
> mal mit "echo $getlock" und "echo $getunlock" geprüft, $getlock gab
> nichts zurück, $getunlock gab 1 zurück ? Könnte mir das helfen ?
> 
> Hoffe war nicht zu lang das posting ... :-)
> 
> mit bestem Gruß
> 
> -Armin
> _____________________________________________________________
> Du bist PHP-Einsteiger ? Installationsguides, BestofGML, Tipps, Links
> MySQL-Tutorial, WhoIsWho, Spotlight *NEU* dt. Manual *NEU* ---
>        DyNAMIc WEb PAGes at http://www.dynamic-webpages.de
> 
> ---
> *** Abmelden von dieser Mailingliste funktioniert per E-Mail
> *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe

-- 
Andreas Vierengel

System and Network
Professional / Consultant

GEDIF GmbH

---
*** 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