PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘Gearman’ tag

PHP 7: Migration eines Projekts

with 10 comments

PHP 7Noch knapp einen Monat warten, dann erscheint das Christkind PHP7! Was gibt es also schöneres als sich damit zu beschäftigen und erste Erfahrungen zu sammeln?

Im Januar habe ich mir speziell den Arbeitsspeicherverbrauch von PHP 7 angeschaut, die ChangeLogs verinnerlicht, es kompiliert und ein paar Testzeilen ausgeführt. Das lief schon sehr gut, aber um größere Projekte laufen zu lassen mangelte es noch an einigen Extensions. Außerdem wollte ich ein Zend Framework 1 Projekt testen, und ZF1 war zu dem Zeitpunkt noch nicht PHP 7-kompatibel.

Doch das hat sich geändert. ZF1 ist seit Mai 2015 mit Version 1.12.12 PHP 7 kompatibel, und auch die von mir benötigten Extensions wurden umgebaut, sodass es nun PHP 7-kompatible Branches vieler Extensions auf Github gibt.

Die Vorgehendweise: Neueste PHP 7 Version herunterladen, kompilieren, Extensions herunterladen, kompilieren, und dann SPASS HABEN!

Also los! PHP 7 RC5 kompilieren

Weiterlesen »

Written by Michael Kliewe

Oktober 24th, 2015 at 6:30 pm

Posted in PHP

Tagged with , , , , , ,

Gearman Worker verbinden sich nach Upgrade nicht mehr

with 5 comments

Heute ein kurzer Tipp bezüglich PECL/gearman: Wenn ihr bei der Nutzung einer aktuellen Version den folgenden Fehler bekommt

send_packet(GEARMAN_COULD_NOT_CONNECT) Failed to send server-options packet
-> libgearman/connection.cc:430

dann liegt es daran dass ihr keinen Port beim Aufruf der Methode GearmanClient::addServer() angegeben habt. Bisher war der zweite Parameter optional und als Default wurde 4730 genommen, aber seit einigen Versionen (welcher genau kann ich nicht sagen) scheint er angegeben werden zu müssen. Wir benutzen aktuell PECL/gearman Version 1.1.1 kompiliert mit libgearman 1.1.5

Falls ihr also Gearman nutzt und den zweiten Parameter noch nicht gesetzt habt, fügt ihn am besten jetzt schon hinzu, damit ihr bei einem Upgrade in der Zukunft keine Probleme bekommt.

Hier habe ich die Lösung gefunden (wäre ich selbst wahrscheinlich nie drauf gekommen):
http://stackoverflow.com/questions/14883681/gearman-gives-me-gearman-could-not-connect-it-is-definitely-running
https://answers.launchpad.net/gearmand/+question/221277

Written by Michael Kliewe

April 8th, 2013 at 3: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 , , , ,

Probleme mit libmemcached und PECL memcached Inkompatibilität

with 4 comments

Da wir uns bei mail.de wunderten warum eines unserer Preload-Scripte nicht so funktioniert wie es sollte, habe ich gestern und heute mehrere Stunden damit zugebracht herauszufinden woran das liegt.

Das Preload-Script ist eine Art Warmup-Script, es lädt gewisse Daten in den Memcached-Server die kurz darauf benötigt werden (könnten). Das Preload-Script läuft mittels Gearman auf eigenen Maschinen, getrennt von den Apache-Webservern.

Da wir neue Features erstmal in einer Umgebung testen die der Live-Umgebung sehr ähnlich ist (wir nennen sie PreLive, andere nennen sie staging), fiel uns da auf dass das Preloading nicht so funktionierte wie gewünscht. Auf unseren Entwicklermaschinen und in der kleinen lokalen Testumgebung ist es nicht aufgefallen da dort beides nicht getrennt ist.

Weiterlesen »

Written by Michael Kliewe

Juni 20th, 2012 at 2:35 pm

Posted in PHP

Tagged with , , ,

Linkpool Nummer 7

without comments

Blogartikel über Mutation Testing, sehr interessant um seine Tests zu testen:

http://blog.astrumfutura.com/index.php?/plugin/tag/mutateme

Webseitengeschwindigkeit ist wichtig:

http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/

Zend Framework 1.10.4:

http://devzone.zend.com/article/12078-Zend-Framework-1.10.4-Released

Einfacher forken unter Linux mit PCNTL:

http://kore-nordmann.de/blog/0098_native_job_queue.html

Git post-receive Hooks mit Gearman umgesetzt:

http://weierophinney.net/matthew/archives/240-Writing-Gearman-Workers-in-PHP.html

PHP Microbenchmarking

http://code.ning.com/2010/05/php-microbenchmarking/

Der „Month of PHP Security“ hat begonnen:

http://php-security.org/

Written by Michael Kliewe

Mai 8th, 2010 at 1:31 pm