Alain: an die perlspezies -> Frage!

Beitrag lesen

hi,

Den wichtigste Punkt hast du vergessen. Wir sprechen von einem CGI Programm, oder?

naja,wieso nicht auch perl?

Du musst dir überlegen, es sit durchaus möglich, das hunderte Benutzer gleichzeitig auf das Skript zugreifen. hundertmal passiert das was du beschreibst gleichzeitig. Kannst du dir das Vorstellen?

prinzip ist bekanntlich so:

Und das ist gefährlich, denn ....

ich weiss,aber wieso kriegt man erst den falschen hinweis was falsch zu machen bevor,man auf die idee kommt,es richtig zu erklären(z.B. in selfhtml),damit man erst gar nicht falsch macht bzw. schlecht programiert?

man öffnet eine datei->einlesen
flockt
schliesst
es passiert was

und hier kann ein anderer Prozeß die Datei öffnen und einlesen.

weiss ich inzwischen auch :)

datei wird wird wieder zum schreiben geöffnet
flockt
schreibt...
schliesst.endof...

und jetzt kommt der 2. Prozess und macht das gleiche und in dem Moment sind die Änderungen wieder weg.

eben.

meine frage jetzt,warum kann man nicht einfach so:
datei öffnen zum lesen und schreiben
flockt LOCK_EX
es passiert was
#kein LOCK_UN
schliesst die datei -> fertig
machen?

So sollte man es tun, dass habe ich dir auch schon mehrmals gesagt.

ok.

wär doch viel einfacher und weniger speicher fressend?!

Das ist egal, es ist nämlich nicht einfacher, da du beim lesen und schreiben immer darauf achten musst wo der Dateizeiger steht und wenn du Daten löschen willst musst du erst den Inhalt löschen bevor du die Datei neu beschreibst, da du ansonsten Datenmüll in deiner Datei hast.

open(DATEI, "+>/tmp/server.cfg");#löscht den bisherigen inhalt der datei und kann auch lesen?Das ist doch auch für die katz,wenn man den inhalt erst löscht,kann man es auch nicht einlesen?!(in selhtml so beschrieben)

dann wäre dies
open(DATEI, "+</tmp/server.cfg");# doch besser ?

warum ist das nicht üblich so?

Weil du bei CGI Programmen nie weißt was passiert.

wieso muss man das ?     ->         ^

Gruss
Alain