SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
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

Más contenido relacionado

Similar a appserver.io IPC Talk - Thread-basierte Anwendungsentwicklung mit PHP

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
 
ALTO, PAGE & Co. Formate für Volltexte
ALTO, PAGE & Co. Formate für VolltexteALTO, PAGE & Co. Formate für Volltexte
ALTO, PAGE & Co. Formate für Volltextecneudecker
 
Microsoft WebApi & SignalR
Microsoft WebApi & SignalRMicrosoft WebApi & SignalR
Microsoft WebApi & SignalRRobin Sedlaczek
 
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)NETWAYS
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtAndreas Schreiber
 

Similar a appserver.io IPC Talk - Thread-basierte Anwendungsentwicklung mit PHP (20)

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)
 
ALTO, PAGE & Co. Formate für Volltexte
ALTO, PAGE & Co. Formate für VolltexteALTO, PAGE & Co. Formate für Volltexte
ALTO, PAGE & Co. Formate für Volltexte
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Microsoft WebApi & SignalR
Microsoft WebApi & SignalRMicrosoft WebApi & SignalR
Microsoft WebApi & SignalR
 
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
 

appserver.io IPC Talk - Thread-basierte Anwendungsentwicklung mit PHP