SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Thread basierte
Anwendungsentwicklung
mit PHP
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
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 ;)
Was ist ein Thread

Ermöglicht die gleichzeitige Ausführung
mehrerer Verarbeitungsschritte
Nutzt die Ressourcen einer Anwendung
gemeinsam
POSIX Thread Standard
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

Register

Stack
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
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 einem Thread
Interessant um z. B. einen HTTP server ;) zu
implementieren
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 Daten über Thread’s
hinweg zu teilen und zu synchronisieren
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)
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 Ergebnis der abhängigen
Threads vorliegt
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
beeinflussen
Erlaubt mit wait() und notify() das Anhalten/
Weiterlaufen lassen referenzierter Threads
Stellt dabei sicher, dass die verwendete Daten
synchron sind (kein Mutex notwendig)
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
Websocket Server based on Ratchet
LemCache Container mit Memcached API
Demo applications available: Neos, Magento ...more soon
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
Einfache Installation von Apps
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
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 http://deb.appserver.io
appserver.io Performance
appserver.io Website
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Workplace Reimagined - Connected, Engaged, Empowered
Workplace Reimagined - Connected, Engaged, EmpoweredWorkplace Reimagined - Connected, Engaged, Empowered
Workplace Reimagined - Connected, Engaged, EmpoweredDreamforce
 
Salesforce Shield: How to Deliver a New Level of Trust and Security in the Cloud
Salesforce Shield: How to Deliver a New Level of Trust and Security in the CloudSalesforce Shield: How to Deliver a New Level of Trust and Security in the Cloud
Salesforce Shield: How to Deliver a New Level of Trust and Security in the CloudDreamforce
 
Projeto de lei internet livre wifi_vereador anadelso pereira
Projeto de lei internet livre wifi_vereador anadelso pereiraProjeto de lei internet livre wifi_vereador anadelso pereira
Projeto de lei internet livre wifi_vereador anadelso pereiraClaudio Figueiredo
 
Frame of music promotion
Frame of music promotionFrame of music promotion
Frame of music promotionCozy Mizoguchi
 
Prot. 517 17 pl institui o processo de escolha dos gestores escolares para ...
Prot. 517 17   pl institui o processo de escolha dos gestores escolares para ...Prot. 517 17   pl institui o processo de escolha dos gestores escolares para ...
Prot. 517 17 pl institui o processo de escolha dos gestores escolares para ...Claudio Figueiredo
 
Prot. 717 17 pelo - acrescentar o inciso xxi ao artigo 12 - professor heli...
Prot. 717 17   pelo - acrescentar o inciso xxi ao artigo 12  - professor heli...Prot. 717 17   pelo - acrescentar o inciso xxi ao artigo 12  - professor heli...
Prot. 717 17 pelo - acrescentar o inciso xxi ao artigo 12 - professor heli...Claudio Figueiredo
 

Andere mochten auch (9)

BiswajitBeradoc
BiswajitBeradocBiswajitBeradoc
BiswajitBeradoc
 
Workplace Reimagined - Connected, Engaged, Empowered
Workplace Reimagined - Connected, Engaged, EmpoweredWorkplace Reimagined - Connected, Engaged, Empowered
Workplace Reimagined - Connected, Engaged, Empowered
 
Vivek Pandiyan Resume
Vivek Pandiyan ResumeVivek Pandiyan Resume
Vivek Pandiyan Resume
 
Salesforce Shield: How to Deliver a New Level of Trust and Security in the Cloud
Salesforce Shield: How to Deliver a New Level of Trust and Security in the CloudSalesforce Shield: How to Deliver a New Level of Trust and Security in the Cloud
Salesforce Shield: How to Deliver a New Level of Trust and Security in the Cloud
 
Projeto de lei internet livre wifi_vereador anadelso pereira
Projeto de lei internet livre wifi_vereador anadelso pereiraProjeto de lei internet livre wifi_vereador anadelso pereira
Projeto de lei internet livre wifi_vereador anadelso pereira
 
Frame of music promotion
Frame of music promotionFrame of music promotion
Frame of music promotion
 
Prot. 517 17 pl institui o processo de escolha dos gestores escolares para ...
Prot. 517 17   pl institui o processo de escolha dos gestores escolares para ...Prot. 517 17   pl institui o processo de escolha dos gestores escolares para ...
Prot. 517 17 pl institui o processo de escolha dos gestores escolares para ...
 
Prot. 717 17 pelo - acrescentar o inciso xxi ao artigo 12 - professor heli...
Prot. 717 17   pelo - acrescentar o inciso xxi ao artigo 12  - professor heli...Prot. 717 17   pelo - acrescentar o inciso xxi ao artigo 12  - professor heli...
Prot. 717 17 pelo - acrescentar o inciso xxi ao artigo 12 - professor heli...
 
Bogineni Brouchure-2
Bogineni Brouchure-2Bogineni Brouchure-2
Bogineni Brouchure-2
 

Ähnlich wie Thread basierte Anwendungsentwicklung mit PHP

Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
Suche und PyLucene
Suche und PyLuceneSuche und PyLucene
Suche und PyLuceneThomas Koch
 
PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011Thomas Koch
 
RESTful APIs mit Dart
RESTful APIs mit DartRESTful APIs mit Dart
RESTful APIs mit DartNane Kratzke
 
Nutzen und Anwendungspotentiale von Enterprise Wikis
Nutzen und Anwendungspotentiale von Enterprise WikisNutzen und Anwendungspotentiale von Enterprise Wikis
Nutzen und Anwendungspotentiale von Enterprise Wikispunkt. netServices
 
2.4 sound-, program- und text-objekte
2.4   sound-, program- und text-objekte2.4   sound-, program- und text-objekte
2.4 sound-, program- und text-objekteMichael Konzett
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
SCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare LangzeitarchivierungSCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare LangzeitarchivierungSven Schlarb
 
Session Management for scalable web projects (Froscon 2011 talk in german)
Session Management for scalable web projects (Froscon 2011 talk in german)Session Management for scalable web projects (Froscon 2011 talk in german)
Session Management for scalable web projects (Froscon 2011 talk in german)triagens
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & ToolsUlrich Krause
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabeMichael Konzett
 
Flash cs3, ajax und php
Flash cs3, ajax und phpFlash cs3, ajax und php
Flash cs3, ajax und phpsameerpclab1
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantChristoph Möller
 
Web 2.0 Mit Der Yahoo User Interface Library
Web 2.0 Mit Der Yahoo User Interface LibraryWeb 2.0 Mit Der Yahoo User Interface Library
Web 2.0 Mit Der Yahoo User Interface LibraryStephan Schmidt
 
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und RaumfahrtforschungPython, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und RaumfahrtforschungAndreas Schreiber
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Nane Kratzke
 

Ähnlich wie Thread basierte Anwendungsentwicklung mit PHP (20)

Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Interaktives Web
Interaktives WebInteraktives Web
Interaktives Web
 
Suche und PyLucene
Suche und PyLuceneSuche und PyLucene
Suche und PyLucene
 
PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011
 
RESTful APIs mit Dart
RESTful APIs mit DartRESTful APIs mit Dart
RESTful APIs mit Dart
 
Drupal und twig
Drupal und twigDrupal und twig
Drupal und twig
 
Nutzen und Anwendungspotentiale von Enterprise Wikis
Nutzen und Anwendungspotentiale von Enterprise WikisNutzen und Anwendungspotentiale von Enterprise Wikis
Nutzen und Anwendungspotentiale von Enterprise Wikis
 
2.4 sound-, program- und text-objekte
2.4   sound-, program- und text-objekte2.4   sound-, program- und text-objekte
2.4 sound-, program- und text-objekte
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
SCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare LangzeitarchivierungSCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare Langzeitarchivierung
 
Daos
DaosDaos
Daos
 
Session Management for scalable web projects (Froscon 2011 talk in german)
Session Management for scalable web projects (Froscon 2011 talk in german)Session Management for scalable web projects (Froscon 2011 talk in german)
Session Management for scalable web projects (Froscon 2011 talk in german)
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabe
 
Flash cs3, ajax und php
Flash cs3, ajax und phpFlash cs3, ajax und php
Flash cs3, ajax und php
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Node.js
Node.jsNode.js
Node.js
 
Web 2.0 Mit Der Yahoo User Interface Library
Web 2.0 Mit Der Yahoo User Interface LibraryWeb 2.0 Mit Der Yahoo User Interface Library
Web 2.0 Mit Der Yahoo User Interface Library
 
Python, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und RaumfahrtforschungPython, Plone und Zope in der Luft- und Raumfahrtforschung
Python, Plone und Zope in der Luft- und Raumfahrtforschung
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 

Thread basierte Anwendungsentwicklung mit PHP