SlideShare a Scribd company logo
1 of 14
Download to read offline
Asynchroniczny PHP
Chris Ozog
Cześć!
Jastem Chris
Podobno kocham PHP, ale czy da się to kochać?
Chcesz się skontaktować? Pisz śmiało, może odpowiem:
/krzysztofozog
Kilka słów o mnie...
Filozof i Developer w jednym…
co gorsza, jest to udokumentowane dwoma dyplomami
Jednak bardziej developer:
❖ Od ponad dekady twórca aplikacji webowych
❖ Pierwszą aplikację w PHP stworzył w 2004
❖ Uzależniony od czystego kodu
❖ Lider techniczny w Codesushi
❖ CodeReviewer z zamiłowania
Agenda tego uroczego spotkania
1. Asynchroniczny PHP - czy to w ogóle
możliwe?
2. W czym to się może przydać?
3. Co nieco o... reactPHP
4. Obiecanki cacanki, czyli Promises w PHP
SPOILER: Tak!
1.
Czy to w ogóle
możliwe?
Asynchroniczność w PHP ?
◈ Asynchroniczny vs. wielowątkowy vs.
forking - przypomnienie pojęć
◈ Asynchroniczność to bardziej filozofia niż
konkretna implementacja
◈ Jakie mamy opcje w PHP
○ PThreads
○ Forks (PCNTL)
Możliwe zastosowanie
Asynchronicznego PHP
2.
W czym to się
może przydać?
Zastosowanie asynchronicznego PHP
◈ Przede wszystkim nie ma jednej
uniwersalnej reguły!
◈ Możemy użyć tam gdzie aplikacja spędza
dużo czasu na “oczekiwaniu”
◈ Websockets
◈ Czy powinniśmy od teraz zawsze pisać
Asynchronicznie? - Nie!
Czyli najpopularniejsza opcja
na Asynchroniczny PHP
3.
reactPHP
◈ Istnieje od 2012 (obecna wersja 0.4.2)
◈ Reactor pattern (jak Twisted lub nodejs)
◈ Ratchet - websockety na reackcie
Jak uniknąć callback hell?!
4.
Promises w PHP
Promises
◈ Czym jest promise? - Syntactic sugar
◈ Dwie główne implementacje w php
○ Guzzle/promises
○ reactphp/promise
◈ Zastosowanie promises:
○ Równoległe zapytania do api [Guzzle]
○ Organizacja asynchronicznego kodu
Podsumowanie
◈ Asynchroniczny PHP - da się!
◈ Nie wszędzie ma sens jego stosowanie
◈ ReactPHP może być pomocny
◈ Promises można też użyć “niezależnie”
Dziękuję za uwagę!
Pytania?
W razie czego, tak najłatwiej będzie mnie znaleźć:
/krzysztofozog
chris@codesushi.co

More Related Content

More from Krzysztof (Chris) Ozog

How to protect your code against a destructive influence of client | Codesush...
How to protect your code against a destructive influence of client | Codesush...How to protect your code against a destructive influence of client | Codesush...
How to protect your code against a destructive influence of client | Codesush...Krzysztof (Chris) Ozog
 
Headless approach and acquia - case study | Codesushi
Headless approach and acquia  - case study | CodesushiHeadless approach and acquia  - case study | Codesushi
Headless approach and acquia - case study | CodesushiKrzysztof (Chris) Ozog
 
Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiKrzysztof (Chris) Ozog
 
Jak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | Codesushi
Jak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | CodesushiJak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | Codesushi
Jak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | CodesushiKrzysztof (Chris) Ozog
 
Why I stopped worrying and LOVED PHP | Codesushi
Why I stopped  worrying and  LOVED PHP | CodesushiWhy I stopped  worrying and  LOVED PHP | Codesushi
Why I stopped worrying and LOVED PHP | CodesushiKrzysztof (Chris) Ozog
 
Speed up your zombies! - Bootstrap dev environment in 5 minutes!
Speed up your zombies! - Bootstrap dev environment in 5 minutes!Speed up your zombies! - Bootstrap dev environment in 5 minutes!
Speed up your zombies! - Bootstrap dev environment in 5 minutes!Krzysztof (Chris) Ozog
 

More from Krzysztof (Chris) Ozog (8)

How to protect your code against a destructive influence of client | Codesush...
How to protect your code against a destructive influence of client | Codesush...How to protect your code against a destructive influence of client | Codesush...
How to protect your code against a destructive influence of client | Codesush...
 
Migration from drupal 7 to drupal 8
Migration from drupal 7 to drupal 8Migration from drupal 7 to drupal 8
Migration from drupal 7 to drupal 8
 
Headless approach and acquia - case study | Codesushi
Headless approach and acquia  - case study | CodesushiHeadless approach and acquia  - case study | Codesushi
Headless approach and acquia - case study | Codesushi
 
Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | Codesushi
 
Jak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | Codesushi
Jak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | CodesushiJak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | Codesushi
Jak uchronić Twój piękny kod przed destrukcyjnym wpływem klienta | Codesushi
 
Why I stopped worrying and LOVED PHP | Codesushi
Why I stopped  worrying and  LOVED PHP | CodesushiWhy I stopped  worrying and  LOVED PHP | Codesushi
Why I stopped worrying and LOVED PHP | Codesushi
 
Inner Symfony’s Daemons
 Inner Symfony’s Daemons Inner Symfony’s Daemons
Inner Symfony’s Daemons
 
Speed up your zombies! - Bootstrap dev environment in 5 minutes!
Speed up your zombies! - Bootstrap dev environment in 5 minutes!Speed up your zombies! - Bootstrap dev environment in 5 minutes!
Speed up your zombies! - Bootstrap dev environment in 5 minutes!
 

Asynchroniczny PHP | Codesushi

  • 2. Cześć! Jastem Chris Podobno kocham PHP, ale czy da się to kochać? Chcesz się skontaktować? Pisz śmiało, może odpowiem: /krzysztofozog
  • 3. Kilka słów o mnie... Filozof i Developer w jednym… co gorsza, jest to udokumentowane dwoma dyplomami Jednak bardziej developer: ❖ Od ponad dekady twórca aplikacji webowych ❖ Pierwszą aplikację w PHP stworzył w 2004 ❖ Uzależniony od czystego kodu ❖ Lider techniczny w Codesushi ❖ CodeReviewer z zamiłowania
  • 4. Agenda tego uroczego spotkania 1. Asynchroniczny PHP - czy to w ogóle możliwe? 2. W czym to się może przydać? 3. Co nieco o... reactPHP 4. Obiecanki cacanki, czyli Promises w PHP
  • 5. SPOILER: Tak! 1. Czy to w ogóle możliwe?
  • 6. Asynchroniczność w PHP ? ◈ Asynchroniczny vs. wielowątkowy vs. forking - przypomnienie pojęć ◈ Asynchroniczność to bardziej filozofia niż konkretna implementacja ◈ Jakie mamy opcje w PHP ○ PThreads ○ Forks (PCNTL)
  • 7. Możliwe zastosowanie Asynchronicznego PHP 2. W czym to się może przydać?
  • 8. Zastosowanie asynchronicznego PHP ◈ Przede wszystkim nie ma jednej uniwersalnej reguły! ◈ Możemy użyć tam gdzie aplikacja spędza dużo czasu na “oczekiwaniu” ◈ Websockets ◈ Czy powinniśmy od teraz zawsze pisać Asynchronicznie? - Nie!
  • 9. Czyli najpopularniejsza opcja na Asynchroniczny PHP 3. reactPHP
  • 10. ◈ Istnieje od 2012 (obecna wersja 0.4.2) ◈ Reactor pattern (jak Twisted lub nodejs) ◈ Ratchet - websockety na reackcie
  • 11. Jak uniknąć callback hell?! 4. Promises w PHP
  • 12. Promises ◈ Czym jest promise? - Syntactic sugar ◈ Dwie główne implementacje w php ○ Guzzle/promises ○ reactphp/promise ◈ Zastosowanie promises: ○ Równoległe zapytania do api [Guzzle] ○ Organizacja asynchronicznego kodu
  • 13. Podsumowanie ◈ Asynchroniczny PHP - da się! ◈ Nie wszędzie ma sens jego stosowanie ◈ ReactPHP może być pomocny ◈ Promises można też użyć “niezależnie”
  • 14. Dziękuję za uwagę! Pytania? W razie czego, tak najłatwiej będzie mnie znaleźć: /krzysztofozog chris@codesushi.co