Hi,
Was macht es schon, wenn wegen eines Nebenläufigkeits-Problems mal ein Seitenaufruf nicht gezählt wird? Anders sieht's aus, wenn es um Nutzdaten geht, die dadurch verfälscht werden oder verlorengehen könnten.
Da fehlt jetzt aber irgendwie das Ironie-Flag, oder?
nein, überhaupt nicht.
Es ist überhaupt nicht sichergestellt, dass "nur nicht gezählt" wird. Die Datei kann auch zerstört werden durch einen unglücklichen gleichen Zugriff
Das erklär mir mal - unter der Annahme, dass nur der PHP-Prozess auf die Counterdatei zugreift, das aber gern in mehreren Script-Instanzen überlappend. Wir haben fünf Schritte:
1. open
2. read
3. rewind
4. write
5. close
Schritt 3 und 4 werden übersprungen, wenn nicht gezählt werden soll. Theoretisch kann diese Schrittkette an jeder Stelle unterbrochen und von einer weiteren Script-Instanz neu begonnen werden. Es kann nie etwas Schlimmeres passieren, als dass der Zählerwert um die Anzahl der gleichzeitig-überlappend laufenden Script-Instanzen "nachgeht". Die Sicherstellung der Integrität des Dateisystems an sich liegt dabei natürlich in der Verantwortung des Betriebssystems, jeder der fünf Schritte muss für sich betrachtet atomar sein.
und dann wird falsch gezählt. Da können dann schon leicht mal 1000de von Aufrufen zusätzlich hinzugemogelt werden.
Eher schon ein paar fehlen.
Aber selbst wenn du Recht hast: Was macht's? Es soll ein Zugriffszähler sein, dessen Sinn und Wert von vornherein fragwürdig ist, und dessen Zählwert sowieso nur als Schätzbasis für den Betreiber der Site dienen kann. Das meinte ich mit dem Verhältnis von Aufwand und Nutzen. Das ist so, als würde ich meine Gartenlaube mit Sicherheitsschloss, Netzhautscanner und Alarmanlage ausrüsten, obwohl nur eine Hacke und ein Spaten drinstehen.
Liebe Grüße aus dem schönen Oberharz
... wo's jetzt bestimmt noch viel Schnee hat und ekelhaft kalt ist. :-)
Ciao,
Martin
Die Natur ist gnädig: Wer viel verspricht, dem schenkt sie zum Ausgleich ein schlechtes Gedächtnis.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(