Archive for 2012
Wie viele interne Funktionen hat PHP?
Tja, das ist nicht so leicht zu beantworten, die Antwort lautet: Kommt drauf an.
- Zählt man nur die Funktionen in der sogenannten Standard-Extension und der SPL-Extension sind es 526. Das ist also die Anzahl die jede PHP Installation auf jeden Fall bietet.
- Zählt man auch die Methoden der Klassen mit die mit ausgeliefert werden kommt man zusammen auf 1402. Darin sind jedoch auch viele „doppelte“ Methoden vorhanden die durch Ableitung entstehen.
Doch jede PHP-Installation wird normalerweise mit zusätzlichen Extensions kompiliert bzw. werden weitere geladen, sodass die Anzahl der zur Verfügung stehenden Funktionen deutlich höher ist:
- Zählt man alle internen Funktionen hier in dieser PHP-Version von Xampp dann sind dies 1605. Darin sind nun auch die Funktionen aller installierten Extensions enthalten, z.B. die mysql_* Funktionen durch die mysqli-Extension oder die xdebug_* Funktionen der xdebug-Extension.
- Zählt man alle Funktionen und Methoden zusammen kommt man auf stolze 3825 Funktionen und Methoden.
Ich habe für diese Zählungen die folgenden Scripte verwendet, die jeweils alle gefundenen Funktionen und Methoden inklusive Parametern ausgibt, man erhält also eine lange Liste die ungefähr so aussieht:
Testdaten generieren mit dem Projekt „Faker“
Auf der Suche nach einem Namensgenerator bin ich auf das Projekt „Faker“ von Francois Zaninotto gestossen. Basierend auf den Fakern aus der Perl- und Ruby-Welt kann man damit nicht nur Namen generieren, sondern auch Straßen, Ortsnamen, Telefonnummern, Zahlen, Firmennamen, E-Mail-Adressen, IP-Adressen, URLs, Datumsangaben, und das ganze lokalisiert. Französische Daten sind also andere als italienische oder österreichische.
Sinnvoll sind solche Daten für die Testumgebung, um keine echten Daten nehmen zu müssen bzw. sich keine hunderte eigene Daten auszudenken, oder für Unit-Tests. Die generierten Daten kann man dann beispielsweise nutzen um eine Datenbank zu füllen, Objekte zu erstellen, XML-Dokumente zu generieren oder JSON-Requests abzufeuern. Die Readme des Projekts ist umfangreich und zeigt sehr schön was alles möglich ist.
Ein schönes und nützliches Projekt wie ich finde. Von Christoph Schaefer gibt es auch einen Fork mit einem de_DE Provider, leider ist die Vornamenliste noch etwas kurz, aber man kann gut darauf aufbauen.
Welche Daten nutzt ihr für Testumgebungen, wie generiert ihr eure Testdaten?
PHP Easter Eggs
In vielen Softwareprodukten verstecken die Entwickler kleine Gimmicks, sogenannte Easter-Eggs. Es gibt sie in vielen Microsoft-Produkten, unter anderem ein Flipper in Word oder ein Flugsimulator in Excel, aber auch auf Webseiten und manchmal auch in Hardware gegossen.
In PHP gibt es auch einige kuriose Bilder, die normalerweise dazu gedacht waren am 1. April auf der phpinfo Seite angezeigt zu werden, die aber auch so abrufbar sind wenn man die Einstellung expose_php in der php.ini eingeschaltet hat.
Man kann diese Bildchen sehen indem man an ein beliebiges PHP Script einen bestimmten Query-String anhängt.
Das erste Logo zeigt je nach PHP Version ein anderes Bild. Man kann daran also die Major-Version erkennen und manchmal auch die Minor-Version.
Weiterlesen »
Termine 2012
Einige Konferenzen gab es dieses Jahr bereits, und es wird noch einige geben bei denen wir dabei sein können. Hier die aktuelle Liste die ich mir gemacht habe, falls ihr noch weitere PHP oder PHP-verwandte Konferenzen kennt die es noch 2012 geben wird und die ihr besuchen werdet, sagt bitte kurz Bescheid. Denkt dran, euch stehen einige Tage Bildungsurlaub zu, also mal den Chef fragen wie es mit der Weiterbildung dieses Jahr aussieht!
18. – 19. Mai 2012
phpDay 2012 in Verona, Italien
22. – 25. Mai 2012
php|tek12 in Chicago
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: