PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for Dezember, 2011

Letzte Aktion in 2011: Server via IPv6 verfügbar machen

with 11 comments

So, damit es nicht heißt mein Blog wäre in 2011 nicht via IPv6 erreichbar gewesen ist meine letzte Aktion dieses Jahr meinen Webserver via IPv6 erreichbar zu machen. Da mein Hoster nun auch endlich IPv6 für virtuelle Server anbietet war das ziemlich einfach: Man mußte im Kundenbereich die IPv6 Konnektivität aktivieren und 10 Minuten warten. Und schon war der Server via IPv6 erreichbar:

$ ifconfig venet0 | grep inet6
inet6-Adresse: 2a01:238:42b6:2a00:e661:84eb:4a08:ee54/128 Gültigkeitsbereich:Global
inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine

Dann mußte ich gerade noch den nginx neu kompilieren für die IPv6 Funktionalität (wurde eh mal wieder Zeit, war noch eine alte 0.8.53 Version), sodass ich nun die aktuelle 1.0.11 verwende:

Weiterlesen »

Written by Michael Kliewe

Dezember 31st, 2011 at 12:13 pm

HashDoS Angriff legt (unter anderem) PHP lahm

with 9 comments

Ich bin leider die letzten 2 Tage nur wenige Stunden dazu gekommen die Live-Streams vom 28. Chaos Communication Congress (28C3) zu schauen, aber bzgl. PHP ist heute Nachmittag ein interessanter Talk gehalten worden mit dem Thema Effective Denial of Service attacks against web application platforms dem ich hier einen kurzen Artikel widmen werde.

Es geht darum wie PHP (und die anderen anfälligen Sprachen auch) Hash-Tabellen erstellen und verwalten. Die hier interessante Hash-Tabelle ist das $_POST Array, das man von außen füllen kann, und das anfällig ist wenn man nur genügend „passende“ Datensätze reinfüllt. Der Algorithmus der die Hash-Tabelle befüllt wird nämlich langsamer sobald Kollisionen der Keys auftreten. Schickt man also beispielsweise 300KB POST-Daten an ein PHP-Script ist eine schnelle CPU damit ca. 30 Sekunden unter Volllast. Bei 8MB (dem Standard-Maximum für POST-Daten in der php.ini) wären es immerhin schon 5 Stunden, die die CPU benötigt um die Hash-Table zu füllen. Man kann also mit einer relativ kleinen DSL-Leitung einigen Schaden anrichten. Mit einer Gigabit-Leitung kann man so 10.000 CPU-Kerne dauerhaft beschäftigen.

Weiterlesen »

Written by Michael Kliewe

Dezember 29th, 2011 at 12:32 am

Posted in PHP

Tagged with , , ,

Frohe Weihnachten!

with one comment

Ich wünsche euch allen frohe Weihnachten, lasst euch reich beschenken, vergebt euren Eltern wenn sie wieder peinliche Situationen herbeiführen, und verzeiht es euren Omas wenn sie zu euch den altbekannten Satz „Junge, bist du aber groß geworden“ sagen.

Ich wünsche euch noch keinen guten Rutsch denn hier im Blog wird es zwischen den Feiertagen noch einige Artikel geben.

In diesem Sinne…

Michael

Written by Michael Kliewe

Dezember 24th, 2011 at 1:53 pm

Posted in Allgemein

Tagged with ,

High Performance: Caching (reloaded) mit PHP

with 34 comments

Gastartikel von Oliver Sperke.

Ich bin 35 Jahre alt und seit 10 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängigsten Internetsprachen: PHP, HTML, Javascript und CSS.

Nach langem Arbeiten an einem Projekt fängt der ambitionierte Entwickler an, zu testen, wie sich seine dynamische Internetseite unter Last verhält. Da ja jeder von uns von Millionen Besuchern träumt, will man natürlich auch wissen, wie sich Millionen von Besucher anfühlen und ob unser „kleines Kunstwerk“ davon genau so begeistert wäre wie wir. Dynamische Webseiten sind toll, allerdings hat der gemeine Internetserver ein großes Problem damit. Die Erzeugung ist meist sehr aufwendig. Daten müssen aus Datenbanken geholt werden, Berechnungen wollen berechnet werden und Blogeinträge müssen wie Blogeinträge aussehen.

Seit Jahren hat sich eine simple Technik etabliert, die diese gequälten Webserver entlastet. Jeder fortgeschrittene Entwickler kennt und liebt sie, weil sie so schön einfach und universal einsetzbar ist: *trommelwirbel* Das Caching *tusch*. Da aber Caching an sich ein uralter Hut ist, will ich Euch zeigen, wie Ihr evtl. Eure Performance mit minimalen Änderungen mehr als verdoppeln könnt.

Am Anfang war der Benchmark

Weiterlesen »

Written by Oliver

Dezember 19th, 2011 at 9:46 am

Kleine Einführung in die YouTube API

with 8 comments

So, heute ist die YouTube API dran, nachdem ich letzte Woche die SlideShare API vorgestellt hatte. Mit Hilfe der YouTube Data API ist es möglich Videos hochzuladen, nach Videos zu suchen und Kommentare abzurufen. Man kann sich mit der API auch „einloggen“ und Dinge tun die man als eingeloggter User machen kann, beispielsweise als dieser User Videos hochladen, Playlisten bearbeiten usw.

Da wir uns die Hände nicht unnötig schmutzig machen wollen nutzen wir wieder Zend-Klassen dafür. Ich zeige hier die Verwendung von Zend_Gdata_YouTube, wenn man das ganze Zend Framework scheut kann man die Zend_Gdata Klassen aber auch einzeln downloaden. PHP 5.1.4 und Zend_Gdata > 1.7.7 werden aktuell benötigt.

Für die öffentlichen Funktionen benötigen wir keine Authentifizierung, wir können direkt loslegen. Wenn die YouTube VideoID bekannt ist kann man Informationen zum betreffenden Video wie folgt abrufen:

Weiterlesen »

Written by Michael Kliewe

Dezember 14th, 2011 at 11:08 am