Thread basierte
Anwendungsentwicklung
mit PHP
Tim Wagner
Mitgründer der TechDivision GbR 1997
CTO bei brainGuide AG 2006 - 2009
Entwickler TD GmbH 2009 - 2010
Entwicklu...
Johann Zelger
Freelancer seit 1999
Entwickler bei TechDivision GmbH 2008 - 2010
Magento Entwicklungsleiter TD GmbH seit 20...
Was ist ein Thread

Ermöglicht die gleichzeitige Ausführung
mehrerer Verarbeitungsschritte
Nutzt die Ressourcen einer Anwe...
Prozeß-Modell ohne Thread
Prozess
Statischer Speicher

Programm

Register

Stack
Prozeß-Modell mit Thread
Prozeß
Statischer Speicher

Thread
Register

Stack

Thread

Programm
Thread
Register

Stack

Regi...
Was brauchen wir für Threads?
PHP 5.3+
thread-safe kompiliert mit

--enable-maintainer-zts
PECL extension pthreads -> Thx ...
appserver.io Runtime
https://github.com/techdivision/TechDivision_Runtime
Mein erster Thread
Mein erster Thread
Was ist ein Worker?

Arbeitet ähnlich wie eine Queue
Erlaubt das stacken von Daten und die
asynchrone Verarbeitung in eine...
Einen Worker verwenden
Einen Worker verwenden
Daten über ein Stackable teilen

Sind Tasks die von einem Worker asynchron
ausgeführt werden können
Ermöglichen es dir Dat...
Was kann geteilt werden?

Shared Objects sind Kopien, keine Referenzen,
weil diese intern serialisiert werden
Closures kön...
Daten über ein Stackable teilen
Daten über ein Stackable teilen
Auf Threads mit join() warten

Ermöglicht das Warten auf ein oder mehrere
abhängige Threads
Stellt sicher, dass das Ergebn...
Auf Threads mit join() warten
Auf Threads mit join() warten
Daten mit einem Mutex
synchronisieren

Verhindert das Threads geteilten Daten
überschreiben
Daten mit einem Mutex
synchronisieren
Daten mit einem Mutex
synchronisieren
Threads mit synchronized()
synchronisieren
Ermöglicht den Workflow von Threads durch
das Setzen/Auslesen von Daten zu
beein...
Threads mit synchronized()
synchronisieren
Threads mit synchronized()
synchronisieren
Resourcen teilen

Einige Resource Types können geteilt werden,

z. B. Sockets
Leider jedoch nicht alle wie z.B. MySQLi
Resourcen teilen
Resourcen teilen
!
!

appserver.io

a reference

HTTP 1.1 compliant web server
Persistence Container supporting Doctrine
MessageQueue
Webso...
Warum appserver.io
Stellt euch eine Multi-Threading fähige

PHP Laufzeitumgebung zur Verfügung
Alternative zum klassischen...
Einfache Installation von Apps
appserver.io Architektur
!

Runtime
ApplicationServer
MessageQueue

PersistenceContainer

ServletContainer

Receiver

Rece...
appserver.io Konfiguration
appserver.io Installation

as .pkg file on Mac OS X 10.8.x, 10.9.x
as .deb for Debian 7.x + Ubuntu 12.04
Debian Repository ...
appserver.io Performance
appserver.io Website
appserver.io mehr Information ...
https://github.com/krakjoe/pthreads
https://computing.llnl.gov/tutorials/pthreads/
http:...
Fragen?

Danke!
Tim Wagner & Johann Zelger

TechDivision GmbH
Spinnereiinsel 3a
83059 Kolbermoor

+49 8031 / 221055-0
info...
Nächste SlideShare
Wird geladen in …5
×

Thread basierte Anwendungsentwicklung mit PHP

612 Aufrufe

Veröffentlicht am

Thread basierte Anwendungsentwicklung mit PHP durch den Einsatz eines Open Source Application Server für PHP, geschrieben in PHP. Mehr Infos zum Projekt gibt´s unter www.appserver.io

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
612
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Thread basierte Anwendungsentwicklung mit PHP

  1. 1. Thread basierte Anwendungsentwicklung mit PHP
  2. 2. Tim Wagner Mitgründer der TechDivision GbR 1997 CTO bei brainGuide AG 2006 - 2009 Entwickler TD GmbH 2009 - 2010 Entwicklungsleiter bei der TD GmbH seit 2010 Project Founder appserver.io
  3. 3. Johann Zelger Freelancer seit 1999 Entwickler bei TechDivision GmbH 2008 - 2010 Magento Entwicklungsleiter TD GmbH seit 2010 Project Founder appserver.io Mittlerweile 31 Jahre, 2 Kinder, 1 Frau ;)
  4. 4. Was ist ein Thread Ermöglicht die gleichzeitige Ausführung mehrerer Verarbeitungsschritte Nutzt die Ressourcen einer Anwendung gemeinsam POSIX Thread Standard
  5. 5. Prozeß-Modell ohne Thread Prozess Statischer Speicher Programm Register Stack
  6. 6. Prozeß-Modell mit Thread Prozeß Statischer Speicher Thread Register Stack Thread Programm Thread Register Stack Register Stack
  7. 7. Was brauchen wir für Threads? PHP 5.3+ thread-safe kompiliert mit
 --enable-maintainer-zts PECL extension pthreads -> Thx Joe Watkins ;) appserver.io Runtime
 http://appserver.io
  8. 8. appserver.io Runtime https://github.com/techdivision/TechDivision_Runtime
  9. 9. Mein erster Thread
  10. 10. Mein erster Thread
  11. 11. Was ist ein Worker? Arbeitet ähnlich wie eine Queue Erlaubt das stacken von Daten und die asynchrone Verarbeitung in einem Thread Interessant um z. B. einen HTTP server ;) zu implementieren
  12. 12. Einen Worker verwenden
  13. 13. Einen Worker verwenden
  14. 14. Daten über ein Stackable teilen Sind Tasks die von einem Worker asynchron ausgeführt werden können Ermöglichen es dir Daten über Thread’s hinweg zu teilen und zu synchronisieren
  15. 15. Was kann geteilt werden? Shared Objects sind Kopien, keine Referenzen, weil diese intern serialisiert werden Closures können nicht geteilt werden, da sie derzeit nicht serialisert werden können Vielen Resource Typen (z. B. MySQL)
  16. 16. Daten über ein Stackable teilen
  17. 17. Daten über ein Stackable teilen
  18. 18. Auf Threads mit join() warten Ermöglicht das Warten auf ein oder mehrere abhängige Threads Stellt sicher, dass das Ergebnis der abhängigen Threads vorliegt
  19. 19. Auf Threads mit join() warten
  20. 20. Auf Threads mit join() warten
  21. 21. Daten mit einem Mutex synchronisieren Verhindert das Threads geteilten Daten überschreiben
  22. 22. Daten mit einem Mutex synchronisieren
  23. 23. Daten mit einem Mutex synchronisieren
  24. 24. Threads mit synchronized() synchronisieren Ermöglicht den Workflow von Threads durch das Setzen/Auslesen von Daten zu beeinflussen Erlaubt mit wait() und notify() das Anhalten/ Weiterlaufen lassen referenzierter Threads Stellt dabei sicher, dass die verwendete Daten synchron sind (kein Mutex notwendig)
  25. 25. Threads mit synchronized() synchronisieren
  26. 26. Threads mit synchronized() synchronisieren
  27. 27. Resourcen teilen Einige Resource Types können geteilt werden,
 z. B. Sockets Leider jedoch nicht alle wie z.B. MySQLi
  28. 28. Resourcen teilen
  29. 29. Resourcen teilen
  30. 30. ! ! appserver.io
 a reference HTTP 1.1 compliant web server Persistence Container supporting Doctrine MessageQueue Websocket Server based on Ratchet LemCache Container mit Memcached API Demo applications available: Neos, Magento ...more soon
  31. 31. Warum appserver.io Stellt euch eine Multi-Threading fähige
 PHP Laufzeitumgebung zur Verfügung Alternative zum klassischen Webserver Bootstrapping nicht mehr nötig Objekte können persistent im Speicher gehalten werden Einfache Installation von Apps
  32. 32. Einfache Installation von Apps
  33. 33. appserver.io Architektur ! Runtime ApplicationServer MessageQueue PersistenceContainer ServletContainer Receiver Receiver Receiver TimerService Worker Threads Worker Socket 0.0.0.0:8587 Socket 0.0.0.0:8585 Message RemoteMethod Socket 0.0.0.0:8586
  34. 34. appserver.io Konfiguration
  35. 35. appserver.io Installation as .pkg file on Mac OS X 10.8.x, 10.9.x as .deb for Debian 7.x + Ubuntu 12.04 Debian Repository http://deb.appserver.io
  36. 36. appserver.io Performance
  37. 37. appserver.io Website
  38. 38. appserver.io mehr Information ... https://github.com/krakjoe/pthreads https://computing.llnl.gov/tutorials/pthreads/ http://appserver.io https://github.com/techdivision/ TechDivision_ApplicationServer http://www.slideshare.net/wagner_tim78/threadbased-development-with-php-26426371 http://tinyurl.com/na5ulal
  39. 39. Fragen? Danke! Tim Wagner & Johann Zelger TechDivision GmbH Spinnereiinsel 3a 83059 Kolbermoor +49 8031 / 221055-0 info@techdivision.com www.techdivision.com info@appserver.io www.appserver.io

×