Performance

Performante PHP Projekte – Teil 1

Immer mal wieder höre oder lese ich, dass man mit PHP keine performaten Webprojekte umsetzen könne. Satt aber nun einen weiteren PHP vs. Sprache-X Artikel zu verfassen habe ich mir überlegt stattdessen ein paar Tipps zu geben wie man meiner Meinung nach die Performance von PHP-Projekten optimieren kann. Da dies ein sehr umfangreiches Thema ist werde ich das Ganze in mehrere Artikel aufteilen. Anfangen werde ich in diesem ersten Beitrag mit ein paar Tipps zum Webserver.

Lighttpd mit PHP-FPM

Die meisten Root- oder V-Server werden in der Standard-Konfiguration ganz ohne Webserver oder mit Apache2 ausgeliefert. Mein Tipp hier: Alternativen testen! Lighttpd oder Nginx sind in vielen Fällen schneller und benötigen weniger Ressourcen. Jeder Webserver hat seine Vor- und Nachteile, es kann also nicht schaden die Alternativen einmal zu testen. Ich persönlich verwende schon seit längerem Lighttpd und bin sehr zufrieden damit. Die Konfiguration der verschieden Webserver sollte Dank zahlreicher Tutorials die im Netz verfügbar sind kein Problem darstellen.
Desweiteren empfehle ich dringen statt des “üblichen” PHP-Moduls (mod_php) PHP-FPM zu verwenden. Read More…

Fork me on GitHub

mcrypt_create_iv teilweise sehr langsam

Für ein privates Projekt bastle ich seit einiger Zeit an einem IRC-Bot wobei folgendes Problem auftrat:
Sobald Nachrichten in einem IRC-Channel gelesen oder geschrieben wurden hing das Script für einige Sekunden als würde irgendwo ein sleep ausgeführt. Dies war allerdings nicht immer der Fall und trat zudem nicht auf einem Windows System auf. (Weshalb mein Xdebug-Profiling erfolglos war). Es blieb mir also nichts anderes übrig als solange Komponenten des Bots zu deaktivieren bis das Problem nicht mehr auftrat. So stelle ich fest dass, das Problem irgendwo in der Klasse für die FiSH-Verschlüsselung lag. Read More…

PHP: isset vs. array_key_exists

Heute möchte ich mal ein paar Worte zu den Funktionen isset und array_key_exists loswerden. Genauer angeschaut habe ich mir das Verhalten der beiden Funktionen beim Prüfen ob ein Feld in einem Array existiert. Bevor ich zur Performance komme möchte ich jedoch noch auf ein paar Besonderheiten der Funktionen eingehen:

Um zu prüfen ob ein Feld in einem Array existiert ohne dabei Fehlermeldungen zu erzeugen muss vor beiden Funktionen isset und is_array aufgerufen werden.

Beispiel:

1
2
3
4
if(isset($foo) && is_array($foo) && isset($foo['bar']))
{
	$check = true;
}
1
2
3
4
if(isset($foo) && is_array($foo) && array_key_exists('bar', $foo))
{
	$check = true;
}

Read More…

PHP-Performance: preg_match vs. strpos

Folgendes Problem hat man als Coder sicherlich öfters zu lösen: Man möchte wissen ob String A, String B oder String C (u.s.w) in einem Text vorkommen. Beispielsweise holt man eine Liste mit Keywords aus einer Datenbank und möchte wissen ob eins dieser Keywords in einem Text vorkommt.
Um das Problem zu lösen gibt es sicherlich zig verschiedene Möglichkeiten. Die gängigsten sehen wahrscheinlich in etwas so aus:

1
2
3
4
if(stripos($haystack, $needle) !== false)
{
	$found = true;
}
1
2
3
4
if(preg_match('/'.$needle.'/is', $haystack) == 1)
{
	$found = true;
}

Read More…

PHPIDS im Praxistest

Nachdem ich in letzter Zeit einiges über das Intrusion-Detection-System PHPIDS gelesen habe, habe ich es nun selbst einmal getestet. Hier meine bisherigen Erfahrungen:

Testumgebung
Für den Test habe ich Projekt genutzt welches sich derzeit noch in der Entwicklung befindet.
Das Projekt liegt lokal auf einem Thinkpad T42 (1,7Ghz und 2GB Ram) in einer XAMPP-Umgebung mit XDEBUG.
Read More…

 Scroll to top