Thread based development with PHP

Preview:

DESCRIPTION

Talk about thread based software development with PHP using Joe Watkins PECL extension phtreads.

Citation preview

PHP and \Thread based development

September 2013

Sunday, September 22, 13

PHP and \Thread based development

\Schedule

What is a \Thread

What do i need to work with \Threads in PHP

Starting a simple \Thread

Stack data using a \Worker

Sharing data using a \Stackable

Synchronize using a \Mutex

Synchronize using a \Closure

Stack your data on a \Worker

Sharing resources

Problems you’ll face when working with \Threads

Sunday, September 22, 13

What is a \ThreadProcedure that runs independently from its main program

Threads typically exists as subsets of processes

Sunday, September 22, 13

What do i need to work with \ThreadsPHP 5.3+

compiled thread safe with --enable-maintainer-zts

PECL extension pthreads

or install runtime from http://appserver.io

Sunday, September 22, 13

Starting a simple \ThreadShows how a \Thread will be created and started

That the script has been finished before the Thread has been finished

Sunday, September 22, 13

PHP and \Thread based development

Starting a simple \Thread

Sunday, September 22, 13

PHP and \Thread based development

Starting a simple \Thread - Result

Sunday, September 22, 13

Stack data using a \WorkerAllows you to stack data and execute in a \Thread

Works like a queue

Interesting to build a daemon e. g. a HTTP server ;)

Sunday, September 22, 13

PHP and \Thread based development

Sharing data using a \Stackable

Sunday, September 22, 13

PHP and \Thread based development

Stacking data using a \Worker - Result

Sunday, September 22, 13

Sharing data using a \StackableTasks that are executed by \Worker threads

Enables you to share data between threads

Sunday, September 22, 13

PHP and \Thread based development

Sharing data using a \Stackable

Sunday, September 22, 13

PHP and \Thread based development

Sharing data using a \Stackable - Result

Sunday, September 22, 13

Synchronize using a \MutexCan be used to prevent threads overwrite shared data

Sunday, September 22, 13

PHP and \Thread based development

Synchronize using a \Mutex

Sunday, September 22, 13

PHP and \Thread based development

Starting a simple \Thread - Result

Sunday, September 22, 13

Synchronize using a \ClosureNecessary to influence \Thread workflow

Allows starting/stopping a referenced \Thread

Sunday, September 22, 13

PHP and \Thread based development

Synchronize using a \Closure

Sunday, September 22, 13

PHP and \Thread based development

Synchronize using a \Closure - Result

Sunday, September 22, 13

Sharing resourcesSome resource types can be shared, e. g. sockets

Not all resources can be shared, e. g. MySQLi

Sunday, September 22, 13

PHP and \Thread based development

Sharing resources

Sunday, September 22, 13

PHP and \Thread based development

Sharing resources - Result

Sunday, September 22, 13

appserver.io, a referenceHTTP 1.1 compliant web server

Persistence Container supporting Doctrine

MessageQueue

Websocket Server based on Ratchet

Demo applications available: Neos, Magento ... more soon

Sunday, September 22, 13

PHP and \Thread based development

Installation

as .pkg file on Mac OS X 10.8.x

as .deb for Debian 7.x + Ubuntu 12.04

Debian Repository http://deb.appserver.io

Sunday, September 22, 13

PHP and \Thread based development

Website

Sunday, September 22, 13

PHP and \Thread based development

Tim WagnerTechDivision GmbHSpinnereiinsel 3a83059 Kolbermoor

+49 8031 / 221055-0 +49 8031 / 221055-22 info@techdivision.com

www.techdivision.com

Thanks!

Sunday, September 22, 13

Recommended