XaraX: atomarer Zugriff auf Datein

Beitrag lesen

Hallo,

############## Tester gesucht ##############

den unter http://eddi.to-grip.de/PHP/semaphor/ abgelegten Code bitte ich zu testen. Derzeit ist nur die Version 0.1.0 relevant. Das Script soll den Zweck verfolgen, atomare Zugriffe auf eine Datei ohne flock() zu realisieren. Das Script ist halbwegs verständlich kommentiert, jedoch wird für die Ausführung mindestens die Version 5.0.0 (file_put_contents()) benötigt und die Erweiterung sysvsem muß PHP zur Verfügung stehen.

Zum Testen habe ich das apache-eigene Tool ab mit folgenden Parametern genutzt:

$ ./ab -n 1000 -c 10 http://localhost/0.1.0.php
$ ./ab -n 1000 -c 100 http://localhost/0.1.0.php

Gerade bei letzerem Test wird es auf langsamen Maschinen zu Abweichungen dahingehend kommen, daß nicht alle Request abgearbeitet werden können. Stimmt die in der Speicherdatei erfaßte Anzahl von Zugriffen nicht mit der Anzahl an Zugriffen in der access_log überein, so arbeitet das Script nicht wie vorhergesehen (dann habe ich also Mist zusammengescriptet ;)

Ich bitte aber in jedem Fall, um eine kurze Rückmeldung unter Angabe der Serversoftware + Version (+ MPM wenn apache) und der PHP Version + SAPI. Danke :)

############## !!!ACHTUNG!!! ##############

Dieses Script legt Semaphoren an, dabei kann es zu verweisten Semaphoren kommen. Auf einem Linuxsystem stehen zum manuellen Aufspüren und Entfernen solcher die Tools ipcs und ipcrm zur Verfügung (/usr/bin). Eine gute Beschreibung habe ich unter http://www.peter-kohlert.de/t/prg/semaphoren.html gefunden.

Vor dem Test bitte abprüfen, ob die im Script mit $key (ID 001) benannte Semaphore nicht bereits schon von einem anderen Prozess angelegt wurde:

ipcs

(Nur mit Rootrechten werden alle Semaphoren angezeigt!) Gegebenenfalls bitte ich $key manuell auf einen Wert zu setzen, unter dem keine Semaphore im System angemeldet ist.

Ein Testen auf Windows ist ebenso erwünscht. Dabei ist mir die zwangsläufig folgende Fehlermeldung wichtig.

############## Hintergrund ##############

Da flock() derzeit auf multi-threaded Servern, wie dem apachen mit dem MPM worker nicht sauber arbeitet, soll dieses Script bis zu einer besseren Lösung -durch PHP selbst- zumindest auf Linuxsystemen Abhilfe schaffen.

Gruß aus Berlin!
eddi