PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for März, 2013

SQL richtig schreiben: Ausnutzung von Indizes

with 6 comments

PerformanceUm SQL kommt man in der heutigen Webentwicklung nicht herum, und jeder von uns kann SQL-Queries erstellen. Doch nicht jeder SQL-Query, der das korrekte Ergebnis zurückliefert, ist optimal aus Sicht der Performance. Hier ein kleines Beispiel:

Wir haben folgende Tabelle:

CREATE TABLE IF NOT EXISTS `Login` (
  `LoginId` int(11) NOT NULL AUTO_INCREMENT,
  `UserId` int(11) NOT NULL,
  `LoginDateTime` datetime NOT NULL,
  PRIMARY KEY (`LoginId`)
)

Nehmen wir an in der Tabelle sind 10.000.000 Zeilen. Es sind 10.000 verschiedene UserIds enthalten und jeder User hat im Schnitt 1.000 Logeinträge in den letzten 3 Jahren produziert. Die Tabelle enthält erstmal keine Indizes.

Die Aufgabe ist die folgende: Hole alle Logeinträge die in den letzten 30 Minuten stattgefunden haben.

Die Queries

Weiterlesen »

Written by Michael Kliewe

März 27th, 2013 at 10:10 am

OpCache in PHP 5.5

with 4 comments

Ende Januar wurde es von Zeev Suraski, dem Chef von Zend, angekündigt und am 13. Februar in die Tat umgesetzt: Der Quellcode des Opcode Caches von Zend mit dem Namen Optimizer Plus wurde auf GitHub veröffentlicht und unter die PHP-Lizenz gestellt, mit dem Ziel es in den PHP-Kern einzubauen. Der Zeitplan war aber sehr problematisch, denn eigentlich war für März die neue PHP-Version 5.5 geplant. Doch der Code ist bereits seit Jahren im Closed-Source-Einsatz bei Zend, ziemlich stabil, und es wäre das neue Feature in der neuen Version.

Release und Voting

Doch dafür muss der jährliche Release-Zyklus gedehnt und das Release um wenige Monate verschoben werden. Die Diskussion ging einige Wochen, auch bereits vor der eigentlichen Veröffentlichung, und ein Voting im RFC sollte entscheiden. Doch auch das Voting war problematisch, denn es gab 3 Möglichkeiten: Release mit PHP 5.5 incl. Verzögerung von wenigen Monaten, Release mit PHP 5.5 nur ohne Verspätung sprich 5.6, und die dritte Möglichkeit war keine Integration in den Kern.

Weiterlesen »

Written by Michael Kliewe

März 20th, 2013 at 10:19 am

Gewinner des Buches: Erfolgreiche Softwareprojekte im Web

with 7 comments

Erfolgreiche Softwareprojekte im Web - FrontDer Gewinner des Buches Erfolgreiche Softwareprojekte im Web wurde mit unten stehendem einfachen SQL-Query bestimmt und lautet:

Jörg!

Herzlichen Glückwunsch! Ich habe dich bereits angeschrieben wegen deiner Adresse, ich sende es dir so schnell wie möglich damit du es schnell lesen kannst.

Alle anderen werden das Buch jetzt kaufen! Ihr habt offensichtlich alle Interesse daran, also los, es ist nur 2 Klicks entfernt!

Edit: Es gibt übrigens auch eine Kindle-Version!

SELECT *
FROM wp_comments
WHERE comment_post_ID = 6018
AND comment_date < '2013-17-03 23:59:59'
AND comment_approved = 1
AND comment_author_url <> 'http://www.phphatesme.com'
GROUP BY comment_author_IP
ORDER BY RAND()
LIMIT 1

Gewinnerzeile

Written by Michael Kliewe

März 18th, 2013 at 12:09 am

Buchverlosung: Erfolgreiche Softwareprojekte im Web (100 Gedanken)

with 100 comments

Heute eine schnelle Verlosung: Ich habe vom Kollegen Nils (phphatesme.com) ein frisches Exemplar seines neuen Buches zur Verlosung bekommen: Erfolgreiche Softwareprojekte im Web – 100 Gedanken zur Webentwicklung

Da ich es selbst noch nicht durch habe (bin bei Gedanke Nummer 12) kann ich euch noch keine Rezension präsentieren, aber es ist drin was versprochen wird: 100 Gedanken zur Webentwicklung, eine breite Übersicht über wichtige Themen bei Webprojekten. Einige bekannte Gastautoren steuern ihren wichtigsten Gedanken bei, jedes der 100 Kapitel ist ungefähr 2-4 Seiten lang und enthält die Essenz zum Thema, sodass man sich bei Interesse weiter informieren kann.

Da es so neu auf dem Markt ist möchte ich nur eine kurze Verlosungsphase machen: Wer mitmachen möchte muss in den nächsten 58 Stunden hier im Blog einen Kommentar hinterlassen (Ende demnach Sonntag 17.03.2013 23:59). Ich kontaktiere den Gewinner dann per E-Mail bzgl. Adresse. Mehrfachteilnahme natürlich unerwünscht.

Viel Glück!

Erfolgreiche Softwareprojekte im Web - Front Erfolgreiche Softwareprojekte im Web - Back

Written by Michael Kliewe

März 15th, 2013 at 1:22 pm

Richtige Threads in PHP einfach erstellen mit pthreads

with 34 comments

Wir alle haben gelernt dass PHP kein richtiges Multi-Threading kann, und auch Kindprozesse zu forken ist nicht ganz trivial. Extensions wie PCNTL funktionieren nicht unter Windows und sind schwer zu bedienen. Man kann sich eventuell mit exec() behelfen und damit weitere Prozesse starten, verliert dann jedoch die Möglichkeit, die Prozesse zu synchronisieren oder einfach Nachrichten zwischen ihnen auszutauschen.

Und wer möchte eigentlich Threads in PHP und wofür?

Größere Projekte gehen heutzutage häufig den Weg, für Asynchronität und Parallelität Tools wie Gearman zu nutzen. Mit einem Gearman-Job-Server und einer beliebigen Menge an verbundenen Workern, die auch noch in beliebigen Programmiersprachen geschrieben sein können, kann man eine Menge Arbeit parallelisieren, aber ist eine komplette Gearman-Installation wirklich immer nötig? Gerade für kleinere Projekte ist das sicherlich zuviel, und auf Shared Hosting Platformen kann man keine Worker starten.

Weiterlesen »

Written by Michael Kliewe

März 13th, 2013 at 12:26 pm

Posted in PHP

Tagged with , , , ,