Współbieżność w ekosystemie PHP

Dlaczego tak, dlaczego nie i kiedy nie - wielowątkowość, wieloprocesowość i async w Hacku.

Kim jestem?

  • programistą
  • team leaderem
  • architektem

O czym będzie mowa?

  • pthreads
  • pcntl, sysv*
  • async

Dlaczego tak?

  • współbieżność i wydajność
  • brak zewnętrznych kolejek
  • wielordzeniowe systemy

Dlaczego nie?

  • debugowanie
  • testowanie
  • złożona architektura
  • CPU
  • PHP i thread safety
  • doświadczenie

Kiedy tak?

  • dużo oczekiwania
  • duża liczba zadań
  • w konsoli
  • bez wątków i procesów

Kiedy nie?

  • konieczne zachowanie sekwencyjności
  • brak rozszerzeń
  • ograniczenia funkcjonalne
  • WWW i nie-async

pthreads

  • --enable-maintainer-zts
  • niepewny rozwój
  • PHP i wątki
  • przyjazne API
  • dużo przykładów

phtreads

  • Worker
  • Pool
  • Stackable
  • Mutex

pcntl

  • apt-get install php5-cli
  • core PHP
  • dojrzałe

pcntl

  • pcntl_fork
  • IPC
  • sysvsem
  • sysvmsg
  • sysvshm
  • SAPI

async

  • to nie wątki
  • młode i niedojrzałe
  • Facebook
  • dokumentacja
  • nieprzyjazne API

async

Podsumowanie

  • nowoczesne pthreads
  • stabilny pcntl
  • zagadka async

Linki

pthreads Windows
http://windows.php.net/downloads/pecl/releases/pthreads/
pthreads/pcntl demo
https://github.com/iwankgb/threads
async - curl_multi_exec
http://bit.ly/1nisT9x
async - strumienie
http://bit.ly/1rp5cYi
async - mysql
http://bit.ly/1nqFVSg
async - mysqlnd
http://bit.ly/1F4V3uq
async - blog HHVM
http://hhvm.com/blog/7091/async-cooperative-multitasking-for-hack
prezentacja
http://critical.today/phpers-concurrency/

?

Concurrency in PHP ecosystem

Why and when - multithreading, multiprocessing and Hack async.

Who am I?

  • a developer
  • a team leader
  • an architect

What is this about?

  • pthreads
  • pcntl, sysv*
  • async

Pros

  • concurrency and performance
  • no need for external queueing
  • multicore systems

Cons

  • debugging
  • testing
  • complex architecture
  • CPU
  • PHP and thread safety
  • experience

When do?

  • lots of waiting
  • lots of tasks
  • in command line
  • without multithreading and multiprocessing

When do not?

  • sequence matters
  • can't install extension
  • functional limitations
  • WWW and not-async

pthreads

  • --enable-maintainer-zts
  • unsure development
  • PHP and threads
  • friendly API
  • many examples

phtreads

  • Worker
  • Pool
  • Stackable
  • Mutex

pcntl

  • apt-get install php5-cli
  • core PHP
  • mature

pcntl

  • pcntl_fork
  • IPC
  • sysvsem
  • sysvmsg
  • sysvshm
  • SAPI

async

  • this is not multithreading
  • young and immature
  • Facebook
  • documentation
  • unfriendly API

async

Summing thoughts up

  • modern pthreads
  • stable pcntl
  • mystery of async

Links

pthreads on Windows
http://windows.php.net/downloads/pecl/releases/pthreads/
pthreads/pcntl demo
https://github.com/iwankgb/threads
async - curl_multi_exec
http://bit.ly/1nisT9x
async - streams
http://bit.ly/1rp5cYi
async - mysql
http://bit.ly/1nqFVSg
async - mysqlnd
http://bit.ly/1F4V3uq
async - HHVM blog
http://hhvm.com/blog/7091/async-cooperative-multitasking-for-hack
presentation
http://critical.today/phpers-concurrency/?lang=en

?