Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP Além do Síncrono

Diana Arnos
September 17, 2021

PHP Além do Síncrono

Assíncrono e Paralelo: o PHP também faz

Quando tudo era mato, ninguém acreditava que a linguagem PHP poderia ser usada para nada além da execução de scripts simples, sites ou um CMS de código bem bagunçado.
Então o mundo mudou e hoje temos grandes frameworks, sistemas corporativos, grandes portais e redes sociais e até sistemas de segurança e pagamentos escritos em PHP.
Agora, a comunidade se debruça sobre o novo hype (ou seria necessidade?): processamento assíncrono e paralelo.
Nessa apresentação, vamos entender a difereça entre async e paralelo, como podemos trabalhar com isso usando PHP (inclusive nativamente).

Conheça a sua ferramenta.

Diana Arnos

September 17, 2021
Tweet

More Decks by Diana Arnos

Other Decks in Programming

Transcript

  1. PHP Além do Síncrono
    Assíncrono e Paralelo: o PHP também faz

    View Slide

  2. @dianaarnos
    Dev, Gaming, Music, Kung Fu.
    Senior Software Engineer @ Momentive (Amsterdã, Holanda)
    Evangelista PHP

    View Slide

  3. VOCÊ DISSE…

    View Slide

  4. VOCÊ DISSE…
    ASSÍNCRONO?

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. MAS ANTES...

    View Slide

  11. MAS ANTES...

    View Slide

  12. SÍNCRONO
    X
    ASSÍNCRONO
    X
    PARALELO

    View Slide

  13. Síncrono
    Tempo
    Tarefa 1 Tarefa 2 Tarefa 3

    View Slide

  14. Assíncrono
    Tempo
    Tarefa 1 Tarefa 2 Tarefa 3

    View Slide

  15. Paralelo
    Tempo
    Tarefa 1 Tarefa 2 Tarefa 3

    View Slide

  16. View Slide

  17. É SÍNCRONO…

    View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. É SÍNCRONO… TAMBÉM

    View Slide

  26. View Slide

  27. PHP PURO:
    ● CORROTINAS (GENERATORS)
    ● CORROTINAS (FIBERS - PHP 8.1)
    ● STREAMS NÃO-BLOQUEANTES
    ● FORKS
    ● CURL_MULTI_*
    EXTENSÕES:
    ● PARALLEL
    ● SWOOLE

    View Slide

  28. ASSÍNCRONO

    View Slide

  29. GENERATORS

    View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. TÁ, MAS E AÍ?

    View Slide

  42. CORROTINAS

    View Slide

  43. ROTINAS QUE COOPERAM ENTRE SI

    View Slide

  44. A () {
    // EXECUTA CÓDIGO
    B();
    // ...
    CONTINUA B();
    // …
    FIM DA EXECUÇÃO
    }
    B () {
    // PROCESSA ENTRADA
    CONTINUA A();
    // …
    CONTINUA A();
    }
    COMUNICAÇÃO

    View Slide

  45. GENERATORS, DE NOVO

    View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. CORROTINAS
    PHP 5.5 - 2013

    View Slide

  55. FIBERS

    View Slide

  56. FIBERS
    PHP 8.1 - Novembro, 2021

    View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. View Slide

  62. STREAMS NÃO-BLOQUEANTES

    View Slide

  63. View Slide

  64. View Slide

  65. View Slide

  66. View Slide

  67. STREAMS NÃO-BLOQUEANTES
    PHP 4.3 - 2002

    View Slide

  68. PARALELO

    View Slide

  69. cURL

    View Slide

  70. curl_multi_*

    View Slide

  71. View Slide

  72. View Slide

  73. View Slide

  74. View Slide

  75. View Slide

  76. View Slide

  77. View Slide

  78. View Slide

  79. View Slide

  80. FORK
    PHP 4.1 - 2001

    View Slide

  81. View Slide

  82. EXTENSÕES

    View Slide

  83. PARALLEL

    View Slide

  84. View Slide

  85. View Slide

  86. SÓ COM PHP ZTS

    View Slide

  87. SWOOLE

    View Slide

  88. View Slide

  89. conclusão

    View Slide

  90. View Slide

  91. REFERÊNCIAS E SLIDES
    https://bit.ly/ccd2021-php-async

    View Slide

  92. Me ajude a melhorar essa apresentação
    https://www.surveymonkey.com/r/php-async

    View Slide

  93. OBRIGADA!
    PERGUNTAS?
    Fale comigo: @dianaarnos

    View Slide