The CGI-Forum

Here you can read all entries on the board and/or make own entries. Have fun!
??? Re: flock ??? xwolf - xwolf (xwolf@xwolf.com), 16.9.97 - 12:31:56
Hi,
>Wie oben gesagt: Die Scripts laufen unter Linux und nicht Windows!
>Woran kann es denn dann liegen? Hast du vielleicht noch eine andere locking-Prozedure, die dann fast 100% funktioniert, auch wenn die langsamer ist???
Also eigentlich -traut man den manuals- sollte flock, wenn es richtig angewandt wird, keine Fehler machen.

Als Alternative zur flock()-Funktion gibt es nur die Moeglichkeit, tief in
die IPC-Funktionen einzusteigen. Bevor ich die Loesung mit flock aus einer
Perl-Manual geholt hab, hab ich das auch bereits versucht.
Das Ergebniss sieht so aus, das es nahezu 1500 Seiten gibt, die ueber das
Problem berichten (laut HotBot). Aber: Diese 1500 Seiten sind fast alles
Kopien einer einzigen Seite, die einmal das Thema relativ kurz beschreibt, und
nach einem unkommentierten Beispiel das Kapitel wieder beendet.

Man koennte nun -wenn man Informatik studiert- denken: 'Gut, wenn das mit Semaphoren nicht taugt, dann programmier ich mir es halt mit einen Monitor..'.
Das ist sicher ein gangbarer weg. Aber er wuerde dann alles total verkomplizieren. Du muesstest dir also das open() umschreiben oder ein neues open() machen, welches nicht direkt eine File schreibt, sondern eine Verbindung
zu einem anderen Prozess startet, der auch noch dauerhaft laufen muss (oder angeworfen wird), um den dann die Daten zu uebergeben wie bei open().

Wenn du ein grosses Skript hast, wo normale open()-Befehle an jeder Ecke
vorkommen, weisst du was das fuer ein Aufwand wird.
verschlimmernd kommt hinzu, dass durch den Verbindungsaufbau zum Monitor etc.
eine nicht zu vernachlaessigende Datenlast gemacht wird: Dein Programm wird langsamer und dein Webserver auch.


Lange Rede kurzer Sinn. Es ist nun mal so, dass im Moment weder UNIX, noch Linux, geschweige denn Windoof, das Problem geloest haben, dass man atomare
Funktionen braucht. (Dafuer barucht man nicht nur eine neue Software, sondern
auch Aenderungen an der Hardware!)
Aus diesem Grund ist es nur moeglich, zu versuchen, das problem mit der Gleichzeitigkeit so gut wie moeglich zu entschaerfen.
Laut der Manual soll flock der beste Weg sein...

Ich hatte nachdem ich erstmal flock() hatte nicht mehr das Problem das du oben geschildert hattest..Bist du sicher, das du die funktionen auch richtig aufgerufen hast?

Falls ja, wuerde ich nur noch die Moeglichkeit sehen, ein noch sicherer locking zu machen: Du nimmst meine lock() und unlock() -Funktionen und verknuepfst diese mit den zweiten lock-Funktionen der cgi-library: Doppelt haelt besser.

Mehr kann ich lkeider jetzt auch nicht sagen, sorry.
Ciao,
Wolfgang


New MessageReply tn thisReply on topicDeleteOverviewPreviousNext Mail this Mail topic Mail all
New messageReply to this messageEntry to this topicDelete entryAll entries Previous Entry Next EntryMail this message Mail this topic Mail all messages

Script written by
Wolfgang Wiese, feedback welcome.