Tom: PHP Funktion nicht doppelt ausführen...

Beitrag lesen

Hello Hopsel,
hi johny7,

What is a "Nebenläufigkeitsproblem" und was meinst du damit bzw. worin liegt es jetzt hier?

if(exists($beer))

{
  drink($beer);
}


>   
>    Benutzer 1                    Benutzer 2  
>   
> 0: [Skriptaufruf]  
> 1: `exists($beer)`{:.language-php} -> `true`{:.language-php}         [Skriptaufruf]  
> 2:                               `exists($beer)`{:.language-php} -> `true`{:.language-php}  
> 3: `drink($beer) // *schlürf*`{:.language-php}  
> 4:                               `drink($beer) // kein *schlürf*, da Bier schon weg ;-(`{:.language-php}  
  
nett erklärt :-)  

>   
> Problem verstanden? =)  
>   
> Falls dich das Thema interessiert:  
> <http://de.wikipedia.org/wiki/Threadsicherheit>  
> <http://de.wikipedia.org/wiki/Semaphor_%28Informatik%29>  
> <http://de.wikipedia.org/wiki/Mutex>  
  
Das Problem tritt in Multiuserumgebungen prinzipiell immer auf, wenn eine Funktion, die auf äußere Daten zugreift, zweimal aufgerufen wird und in der Zeitlücke zwischen den Aufrufen bei anderen Prozessen nicht verhindert, dass diese die Daten ändern können.  
  
Oder auch anders ausgedrückt:  
- wenn zwischen Abfrage und Aktion eine Zeitlücke besteht.  
- wenn eine Zuweisung von einem Funktionsaufruf abhängig gemacht wird  
  und diese Zusweisung dann erst durch erneuten Funktionsaufruf durchgeführt wird  
  
  Das wäre hier der Fall, wenn die Funktion auf gemeinsame Daten zugreift.  
  
  
Das nennt man dann auch TOCTOU-Problem  
<http://en.wikipedia.org/wiki/Time-of-check-to-time-of-use>  
(neuerdings mit zwei 'T' in der Mitte) \*g\*  
<http://www.owasp.org/index.php/File_Access_Race_Condition:_TOCTOU>  
  
  
  
  
  
  
  
  
  
Liebe Grüße aus dem schönen Oberharz  
  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
 ☻\_  
/▌  
/ \ Nur selber lernen macht schlau  
<http://bergpost.annerschbarrich.de>