Zitat:
Zitat von feuervogel
so lange nur ein cpu-kern werkelt, ist eh erst mal alles sequentiell. und selbst bei mehreren cpus dürfte die abwicklung der datenbank sequentiell sein, anders macht es ja auch keinen sinn, da es sonst auch hier zu oben genannten fehlern käme.
|
ähmm
das würde bedeuten, dass unter php niemals ein zeitgleicher zugriff möglich wäre, da php serverseitig arbeitet und da sollte es dann ja nur eine cpu zugreifen (sprich alles sequentiell abgearbeitet werden).
zum thema flock, man kann das file ja unterschiedlich verriegeln:
zitat von
http://at.php.net/manual/de/function.flock.php
Zitat:
flock() arbeitet mit handle, welcher ein existierender Dateizeiger sein muss. Der Parameter operation bestimmt die Art der Verriegelung und kann einen der folgenden Werte annehmen:
*
Um eine verteilte, nur lesende Verriegelung zu erhalten, setzen Sie operation auf LOCK_SH (bzw. 1 vor PHP 4.0.1).
*
Um eine exklusive, nur schreibende Verriegelung zu erhalten, setzen Sie operation auf LOCK_EX (bzw. 2 vor PHP 4.0.1).
*
Um eine Verriegelung freizugeben (lesend oder schreibend), setzen Sie operation auf LOCK_UN (bzw. 3 vor PHP 4.0.1).
*
Wenn Sie Zugriffe während der Verriegelung durch flock() erlauben wollen, fügen Sie LOCK_NB (bzw. 4 vor PHP 4.0.1) zu operation hinzu.
|
was ich jetzt nicht verstehe ist folgendes:
1.
wird mit flock($fp,LOCK_EX) ein exklusiver schreibzugriff zugriff gesetzt kann die datei nicht zum lesen geöffnet werden. file_exists() gibt aber immer TRUE zurück.
2.
startet eine neue instanz des apaches auch eine neue php instanz ?
wenn nein, muss php ja wissen, dass ein lock auf die datei steht und warten, bis sie wieder frei gegeben wird. ausserdem sollte php doch erkennen, dass wenn ein lock auf einer datei steht, diese datei vorhanden sein muss.
ich weiss, viele fragen, aber das interessiert mich nun mal sehr.