Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #3483

Re: Datenbankzugriffe

From "Christoph M. Becker" <cmbecker69@arcor.de>
Newsgroups de.comp.lang.php
Subject Re: Datenbankzugriffe
Date 2015-07-28 22:36 +0200
Organization solani.org
Message-ID <mp8p3f$dd1$1@solani.org> (permalink)
References (8 earlier) <2632905.ucBRBu4qVc@PointedEars.de> <mp8dq9$10n$2@solani.org> <4753524.mzTREkMRjf@PointedEars.de> <mp8eo4$5b7$1@solani.org> <4865029.4SWpFNJUpT@PointedEars.de>

Show all headers | View raw


Thomas 'PointedEars' Lahn schrieb:

> Christoph M. Becker wrote:
> 
>> Thomas 'PointedEars' Lahn schrieb:
>>> Christoph M. Becker wrote:
>>>> Thomas 'PointedEars' Lahn schrieb:
>>>>> [Die] Möglichkeit [von R/W Race Conditions] besteht bei der Verwendung
>>>>> von Sessions nicht.
>>>> Stimmt, da die Session-Dateien gesperrt werden.
>>> Nein, sondern weil jeder Benutzer seine eigene Session-ID und damit seine
>>> eigene Session-Datei bzw. deren Äquivalent zum Beispiel in einer Session-
>>> Datenbank hat.  […]
>>
>> Stimmt. Allerdings könnte der selbe Benutzer gleichzeitig auf die selbe
>> Session-Datei zugreifen wollen.
> 
> Was meinst Du damit?  Benutzer ist hier nicht im Sinne von „Systembenutzer“ 
> (“www-data” etc.), sondern von „Applikationsbenutzer“ zu verstehen.

Na ja, der selbe Client kann ja nahezu gleichzeitig mehrere Requests an
die gleiche Website/Applikation schicken (z.B. per XHR, aber auch
mehrfaches schnelles drücken von F5 ist denkbar). Der Server wird in der
Regel in der Lage sein mehrere Requests gleichzeitig abzuarbeiten, und
so könnte es dazu kommen, dass die gleiche Session-Datei praktisch
gleichzeitig gelesen/geschrieben würde.

>> Ohne Locking ginge das gründlich in die Hose.
> 
> Wie kommst Du darauf, dass bei PHP-Sessions Locking (à la flock(2) oder 
> sogar tatsächlich das) stattfindet?

Ich bin zum ersten Mal durch <https://wiki.php.net/rfc/session-lock-ini>
(proposal 3) darauf gestoßen.

Nachprüfen kann man das Verhalten des Standard-Sessionhandler leicht mit
zwei einfachen Scripten hat, etwa

  <?php
  session_start();

  <?php
  session_start();
  sleep(10);

(Salopp formuliert:) Ruft man das erste Skript auf, kommt die Antwort
postwendend. Ruft man das zweite Skript auf, und in einem anderen Tab
gleich darauf das erste, dann antworten beide etwa gleichzeitig.

Und wie es aussieht, verwendet der Standard-Sessionhandler tatsächlich
flock(2)[1].

[1]
<https://github.com/php/php-src/blob/php-5.6.11/ext/session/mod_files.c#L169>

-- 
Christoph M. Becker

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: Datenbankzugriffe Jan Novak <repcom@gmail.com> - 2015-07-20 14:32 +0200
  Re: Datenbankzugriffe "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-07-20 14:49 +0200
    Re: Datenbankzugriffe Peter Blancke <blancke@gmx.de> - 2015-07-20 13:38 +0000
      Re: Datenbankzugriffe Niels Braczek <nbraczek@freenet.de> - 2015-07-20 18:45 +0200
        Re: Datenbankzugriffe Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2015-07-20 17:16 +0000
          Re: Datenbankzugriffe Jan Novak <repcom@gmail.com> - 2015-07-21 08:15 +0200
      Re: Datenbankzugriffe "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-07-28 22:36 +0200
      Re: Datenbankzugriffe k@rl.pflaesterer.de (Karl Pflästerer) - 2015-07-29 07:00 +0200
        Re: Datenbankzugriffe Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-04 09:19 +0200
          Re: Datenbankzugriffe k@rl.pflaesterer.de (Karl Pflästerer) - 2015-08-04 16:59 +0200

csiph-web