Archive for the ‘Extension’ tag
APC „Potential cache slam averted for key XXX“
Erst gestern bin ich wieder auf den folgenden „Bug“ (bzw. Feature) gestossen und musste den Workaround raussuchen, deshalb schreibe ich ihn jetzt hier nieder, vielleicht stösst ja auch jemand von euch mal darauf.
Es geht um die allseits beliebte APC Extension. Seit Version 3.1.3 (von August 2009) gibt es in APC einen Schutz gegen potentielle Race-Condition-Probleme bzw. einem Deadlock bzw. einem Cache-Slam (so genau weiß ich das auch nicht 😉 ). Es geht jedenfalls darum dass viele parallele bzw. aufeinander folgende APC-Schreibbefehle (apc_add()/apc_store()…) ein Problem auslösen können, und deshalb wurde eine Sperre eingebaut sodass auf einen Key nicht innerhalb kurzer Zeit mehrfach schreibend zugegriffen werden kann. Doch je nach Last auf der Maschine bzw. dem eingesetzten Script kann das durchaus vorkommen, und dann gibt es den Fehler:
Extending and Embedding PHP
Im Februar habe ich von Andre das Buch Extending and Embedding PHP von Sara Golemon angeboten bekommen, und da ich noch keinen tieferen Blick in die Erstellung von PHP Extensions geworfen habe, habe ich zugeschlagen. Wie man bei Amazon lesen kann ist es DAS Standard-Buch wenn es um PHP Erweiterungen geht. Allgemein gibt es über die Innereien von PHP nur wenig Literatur, umso interessantere Einblicke gibt das Buch.
Die 410 Seiten beginnen mit einem Überblick über den PHP Lebenszyklus. Wie verhält sich PHP im CLI Modus, in einer Multi-Prozess-Umgebung, in einer threaded-Umgebung oder wenn PHP in eine andere Applikation eingebettet wird? Es gibt definierte Initialisierungspunkte, in die sich eine Extension einhängen kann (bzw. muss), und eine threaded Umgebung ist nicht ganz problemfrei wenn es um Datenzugriff etc. geht. Auf jeden Fall interessante Einblicke, was PHP so beim „Start“ tut.