
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
-
-
-
Script written by Wolfgang Wiese, feedback welcome.