afankhauser
Goto Top

PHP gleichzeitiger Dateizugriff - gefährlich?

Ich habe mir ein Bestellformular zusammengebastelt.

- Beim Absenden wird das Formular per POST an ein PHP gesentet.
- dieses PHP schreibt diese Daten dann in eine txt-Datei
(jede Bestellung hat eine Zeile zur verfügung)

Das klappt alles einwandfrei auch das weiterverarbeiten ist kein Problem.
Ich bin mich jetzt aber nicht ganz sicher, was geschieht, wenn nun gleichzeitig zwei Bestellungen eingehen. gibt das irgendwelche komplikationen? Oder wird das schön der Reihe nach abgearbeitet?

so nebenbei:
wieso hat es denn Zwei verschiedene PHP Bereiche:
1. ------ PHP (Hypertext Preprocessor)
2. ------ @php

Content-Key: 128397

Url: https://administrator.de/contentid/128397

Printed on: April 23, 2024 at 23:04 o'clock

Member: maretz
maretz Nov 01, 2009 at 15:15:06 (UTC)
Goto Top
Moin,

das kann sogar zu sehr großen Problemen führen wenn du da keine Fehlerbehandlung betreibst. Während ein Prozess die Datei offen hat wird der zweite Prozess keinen Schreibzugriff auf die Datei erhalten können. Somit könnte deine zweite Bestellung im Nirvana landen...

Warum machst du das denn nicht mit ner Datenbank im Hintergrund - da hättest du die Probleme nicht...
Member: aFankhauser
aFankhauser Nov 01, 2009 at 15:54:38 (UTC)
Goto Top
Warum machst du das denn nicht mit ner Datenbank
weil ich einfach nen sturen Kopf habe, und es lieber in einer kleinen txt speichern möchte. face-smile
ausserdem kenn ich mich damit überhaubt nicht aus.

das mit der Fehlerbehandlung scheint mir interessant zu klingen. nur: wie mach ich sowas?
ich spiel so mit Gedanken wie:
<?php
do until zugriff==möglich {
 warte __sekunden
 }
datei öffnen
...blabla
?>

wäre das irgendwie so in der art möglich?
Member: nxclass
nxclass Nov 02, 2009 at 07:52:12 (UTC)
Goto Top
Evtl. hilft dir der Befehl flock() - funktioniert aber nicht immer "...flock() funktioniert nicht auf NFS und verschiedenen anderen vernetzten Dateisystemen ..."
Du solltest auch daran denken das bei deinem Beispiel auch schnell mal ein Timeout kommen könnte und dann werden die Bestellungen nicht gespeichert - oder ebenfalls die Datei zerschossen.

Wenn Du für deine Anwendung keine "fette" Datenbank haben willst - benutze doch SQLite.
Ich arbeite bei kleinen Projekten auch damit ... PDO-Objekt in PHP ( http://php.net/manual/de/book.pdo.php )