Kategorien
Web Frontend Webdeveloper Tools

HTML mal schnell erstellen: Zen Coding mit PHPStorm

Kategorien
Server Administration

Untersuchung des Traffics zwischen lokaler Rechner und Server am Beispiel von XDebug

Wenn man untersuchen will, was an der Kommunikation vom lokalen Rechner und Server bei XDebug nicht funktioniert, kann man sich den Traffic anschauen auf dem Port 9000, der am Server ankommt:

watch -n 1 "netstat | grep 9000"

//Ausgabe
Every 1.0s: netstat | grep 9000                                                                                          Tue Feb  7 16:01:50 2017

tcp        0      0 name:58572        host.server:9000 ESTABLISHED

und am lokalen PC kann man den Traffic beobachtet:

C:\>netstat  1 | find /i "9000"

//Ausgabe
  TCP    172.17.20.65:9000      server:58440    HERGESTELLT
  TCP    172.17.20.65:9000      server:58440    HERGESTELLT

Wenn Xdebug bis zum lokalen System kommt, erhält man eine Ausgabe wie oben sichtbar (Windows).

Kategorien
PHP Server Administration

PHP auf Linux Konsole on-the-fly ausführen

Wenn man einen kurzen PHP Befehl ausführen will auf der Konsole, kann man mit dem –run Parameter Code schnell und unkompliziert ausführen

php -r "echo 'hello world';"

//Ausgabe
hello world
Kategorien
Server Administration

Linux löschen aller Datein mit Namen Regex

Um alle Dateien zu löschen, die einem bestimmten Regex entsprechen, kann man find benutzen:

find . -type f -iname "*error.log\.?"
//findet:
xxerror.log.1
yyyError.log.2
fatalError.log.1

Löschen kann man die gefundenen Dateien mittels des Linux Befehls:

find . -type f -iname "*error.log\.?" -exec rm {} \;
Kategorien
PHP Server Administration

Stress Testing Tools

Zum Stress- bzw. Last-Testen von PHP Applikationen kann man das Tool Apache bench  oder Seige benutzen.

Damit lässt sich das Verhalten einer Applkation unter hoher Last testen.

Kategorien
PHP Server Administration Webdeveloper Tools

Server Management mit Forge

Ein sehr einfaches und gutes Tool für das Server Management von PHP Applikationen ist Laravel Forge, mit dem man seine App auf AWS, Digital Ocean oder Linode betreiben kann inkl.

  • Load Balancing
  • Cron Jobs
  • Domain-Management
  • SSL Zertifikate
  • Queues
Kategorien
PHP

PHP asynchornen Thread starten

Mit PHP kann man nativ keine asynchronen Threads starten, aber über das Betriebsystem natürlich schon. Mit dem Linux command „ab“ kann man sehr einfach einen neuen Thread erstellen und langlaufende Aktionen auslagern. Zum Escapen von shell Argumente kann mn die Funktion escapeshellarg benutzen.

 exec('echo "php create-report.php" | at now');
Kategorien
VBA Excel

VBA Fehler beim Kompilieren: Ungültiges Zeichen

Ich habe beim Makro scheiben mit dem Mac einen Fehler bekommen, den ich nicht beheben konnte, weil dieser nicht am Code lag:
Fehler beim Kompilieren: Ungültiges Zeichen
Die Lösung war, den „fehlerhaften“ Code nochmals abzutippen, dann ging es. Meine Erklärung ist, das ein im Editor nicht angezeites Zeichen mit in den Code gekommen ist.

Kategorien
VBA Excel

VBA Regex Lite mit Like

Native in VBA sind Regex leider nicht möglich, sondern nur über eine ActiveX Bibliothek erhätlich. Wenn man auch für Mac programmieren will, kommt dies nicht in Frage. Statt dessen kann man den Regex Lite befehl „Like“ benutzen, mit dem ähnliche abegspeckte Operationen machen kann.

Bsp.

success = text Like "T-#########-#"
'matches:
'T-123456789-1

success = text Like "[0-9a-z][0-9a-z]"
'matches:
'1a, 2b
Kategorien
Redis

Redis Performance Probleme messen und analysieren

Um Latenz Probleme bei Redis zu analysieren, kann man das eingebaute Latency Tool von redis-cli benutzen, mit dem um 100 Requests pro Sekunde auf den Redis gepingt werden und man die Antwortszeit analysieren kann.

Konsolen Bsp:

Im Intervall von i=10 Sekunden auf localhost getestet

redis-cli --latency-history -i 10 -h 127.0.0.1 -p 6379

Output:

min: 0, max: 10, avg: 0.89 (906 samples) -- 10.01 seconds range
min: 0, max: 32, avg: 1.44 (862 samples) -- 10.00 seconds range
min: 0, max: 6, avg: 0.50 (939 samples) -- 10.00 seconds range
min: 0, max: 7, avg: 0.47 (941 samples) -- 10.01 seconds range
min: 0, max: 12, avg: 0.47 (942 samples) -- 10.00 seconds range
min: 0, max: 137, avg: 2.70 (779 samples) -- 10.01 seconds range
min: 0, max: 119, avg: 5.92 (626 samples) -- 10.06 seconds range
min: 0, max: 2389, avg: 7.31 (572 samples) -- 10.00 seconds range
min: 0, max: 14, avg: 0.64 (926 samples) -- 10.00 seconds range
min: 0, max: 9, avg: 0.50 (938 samples) -- 10.01 seconds range
min: 0, max: 16, avg: 0.47 (941 samples) -- 10.01 seconds range
min: 0, max: 21, avg: 0.56 (933 samples) -- 10.01 seconds range
min: 0, max: 23, avg: 0.56 (933 samples) -- 10.01 seconds range
min: 0, max: 150, avg: 1.95 (827 samples) -- 10.01 seconds range
min: 0, max: 131, avg: 4.22 (696 samples) -- 10.01 seconds range
min: 0, max: 131, avg: 7.06 (581 samples) -- 10.01 seconds range
min: 0, max: 4136, avg: 10.33 (488 samples) -- 10.01 seconds range
min: 0, max: 17, avg: 1.15 (886 samples) -- 10.02 seconds range
min: 0, max: 18, avg: 0.88 (906 samples) -- 10.01 seconds range
min: 0, max: 11, avg: 0.61 (928 samples) -- 10.00 seconds range
min: 0, max: 12, avg: 0.55 (936 samples) -- 10.01 seconds range
min: 0, max: 9, avg: 0.51 (937 samples) -- 10.01 seconds range

Hier kann man gut sehen, dass die Probleme mit einem Abstand von 60 Sekunden  auftreten. Dies lag in dem Fall daran, dass Redis alle 60s sich selber auf die Festplatte persistiert hat. Die entsprechende Option in den redis.conf lautete:

save 60 1000

und mit der Option

save ""

kann das persistieren auf der Festplatte ausgeschaltet werden.

 

Aber auch die Option

appendonly yes

musste auf „no“ gesetzt werden, weil es dadurch auch auf zu viele Schreibzugriffe kam.