$30 off During Our Annual Pro Sale. View Details »

PHP における並列処理と非同期処理入門

memory
PRO
December 01, 2019

PHP における並列処理と非同期処理入門

- PHP Conference Japan 2019

- English Title:
An introduction of pararells processing and asynchronously processing on PHP

memory
PRO

December 01, 2019
Tweet

More Decks by memory

Other Decks in Programming

Transcript

  1. / / PHP 2019
    PHP
    © - BASE, Inc.

    View Slide

  2. © - BASE, Inc.
    Who am I?
    (@m m r )
    BASE
    GameWith
    PHP, TypeScript

    View Slide

  3. © - BASE, Inc.

    View Slide

  4. © - BASE, Inc.

    View Slide

  5. © - BASE, Inc.

    View Slide

  6. © - BASE, Inc.

    View Slide

  7. © - BASE, Inc.

    View Slide

  8. © - BASE, Inc.

    View Slide

  9. © - BASE, Inc.

    View Slide

  10. © - BASE, Inc.

    View Slide

  11. © - BASE, Inc.

    View Slide

  12. © - BASE, Inc.

    View Slide

  13. © - BASE, Inc.
    1

    View Slide

  14. © - BASE, Inc.
    ===

    View Slide

  15. © - BASE, Inc.
    !==

    View Slide

  16. © - BASE, Inc.
    2

    View Slide

  17. © - BASE, Inc.
    ===

    View Slide

  18. © - BASE, Inc.
    !==

    View Slide

  19. © - BASE, Inc.
    3

    View Slide

  20. © - BASE, Inc.
    PHP

    View Slide

  21. © - BASE, Inc.
    PHP

    View Slide

  22. © - BASE, Inc.

    View Slide

  23. © - BASE, Inc.

    View Slide

  24. © - BASE, Inc.
    PHP

    View Slide

  25. © - BASE, Inc.

    View Slide

  26. © - BASE, Inc.

    View Slide

  27. © - BASE, Inc.

    View Slide

  28. © - BASE, Inc.
    1
    2
    1
    2
    2

    View Slide

  29. © - BASE, Inc.

    View Slide

  30. © - BASE, Inc.
    YouTube
    Twitter
    YouTube
    Twitter
    Twitter

    View Slide

  31. © - BASE, Inc.
    YouTube
    Twitter
    YouTube
    Twitter
    Twitter
    Twitter

    View Slide

  32. © - BASE, Inc.
    YouTube
    Twitter
    YouTube
    Twitter
    Twitter
    Twitter

    View Slide

  33. © - BASE, Inc.
    YouTube
    Twitter
    YouTube
    Twitter
    Twitter
    Twitter

    View Slide

  34. © - BASE, Inc.
    YouTube
    Twitter
    YouTube
    Twitter
    Twitter
    Twitter
    ( )

    View Slide

  35. © - BASE, Inc.

    View Slide

  36. © - BASE, Inc.
    N >=
    : Go

    View Slide

  37. © - BASE, Inc.

    View Slide

  38. © - BASE, Inc.

    View Slide

  39. © - BASE, Inc.
    ( )
    1
    2
    1
    2
    3
    4
    3
    1

    View Slide

  40. © - BASE, Inc.

    View Slide

  41. © - BASE, Inc.
    A B A
    B A
    : https://en.wikipedia.org/wiki/Asynchrony_(computer_programming)

    View Slide

  42. © - BASE, Inc.
    JavaScript Ajax Promise,
    setTimeout, setInterval
    PHP Swoole

    View Slide

  43. © - BASE, Inc.
    1
    2
    3
    2 3

    View Slide

  44. © - BASE, Inc.

    View Slide

  45. © - BASE, Inc.
    1
    2
    3
    2

    View Slide

  46. © - BASE, Inc.
    PHP 


    View Slide

  47. © - BASE, Inc.
    PHP

    View Slide

  48. © - BASE, Inc.
    PHP
    PHP
    pcntl pthreads
    popen proc_open PHP

    View Slide

  49. © - BASE, Inc.
    PHP
    PHP
    pcntl pthreads
    popen proc_open PHP

    View Slide

  50. © - BASE, Inc.
    pcntl

    View Slide

  51. © - BASE, Inc.
    pcntl
    pnctl_fork

    View Slide

  52. © - BASE, Inc.
    pcntl
    pnctl_fork
    $processId 0

    View Slide

  53. © - BASE, Inc.
    pcntl
    pnctl_fork

    View Slide

  54. © - BASE, Inc.
    pcntl
    pnctl_fork
    3

    View Slide

  55. © - BASE, Inc.
    pcntl
    pnctl_fork

    View Slide

  56. © - BASE, Inc.
    pcntl
    pnctl_fork
    3

    View Slide

  57. © - BASE, Inc.
    pcntl
    pnctl_fork

    View Slide

  58. © - BASE, Inc.
    pcntl
    pnctl_fork
    3

    View Slide

  59. © - BASE, Inc.
    pcntl
    pnctl_fork

    View Slide

  60. © - BASE, Inc.
    pthreads

    View Slide

  61. © - BASE, Inc.
    pthreads
    pthreads pcntl
    pthreads PHP 

    enable-maintainer-zts
    pthreads resource
    pcntl

    View Slide

  62. © - BASE, Inc.
    pthreads
    pthreads
    https://github.com/krakjoe/pthreads
    pthreads JavaScript Promise
    https://github.com/php-promise/promise

    View Slide

  63. © - BASE, Inc.
    pthreads

    View Slide

  64. © - BASE, Inc.
    pthreads
    Thread

    View Slide

  65. © - BASE, Inc.
    pthreads
    3

    View Slide

  66. © - BASE, Inc.
    pthreads

    View Slide

  67. © - BASE, Inc.
    pthreads

    View Slide

  68. © - BASE, Inc.
    pthreads

    View Slide

  69. © - BASE, Inc.
    pthreads
    3

    View Slide

  70. © - BASE, Inc.
    pthreads

    View Slide

  71. © - BASE, Inc.
    PHP 


    View Slide

  72. © - BASE, Inc.
    Swoole is an event-driven asynchronous &
    coroutine-based concurrency networking
    communication engine
    https://github.com/swoole/swoole-src

    View Slide

  73. © - BASE, Inc.
    Swoole
    coroutine
    https://github.com/swoole/swoole-src

    View Slide

  74. © - BASE, Inc.
    PHP
    Swoole
    Swoole
    coroutine
    Swoole coroutine
    coroutine

    View Slide

  75. © - BASE, Inc.
    PHP
    Swoole pcntl pthreads
    (SWOOLE_PROCESS)

    View Slide

  76. © - BASE, Inc.
    PHP
    go

    View Slide

  77. © - BASE, Inc.
    PHP
    go
    go

    View Slide

  78. © - BASE, Inc.
    PHP
    go

    View Slide

  79. © - BASE, Inc.
    PHP
    go
    3

    View Slide

  80. © - BASE, Inc.
    PHP
    go

    View Slide

  81. © - BASE, Inc.
    PHP
    go

    3

    View Slide

  82. © - BASE, Inc.
    PHP
    go

    View Slide

  83. © - BASE, Inc.
    PHP
    Swoole

    View Slide

  84. © - BASE, Inc.

    View Slide

  85. © - BASE, Inc.

    View Slide

  86. © - BASE, Inc.
    php-promise/php-promise

    3
    AWS Segmentation
    Fault
    OSS

    View Slide

  87. © - BASE, Inc.
    Laravel
    CLI
    enable-maintainer-zts

    View Slide

  88. © - BASE, Inc.
    Guzzle
    enable-maintainer-zts
    PHP

    View Slide

  89. © - BASE, Inc.

    View Slide

  90. © - BASE, Inc.
    Swoole
    PHP

    View Slide

  91. © - BASE, Inc.
    PHP HTTP
    PHP

    View Slide

  92. © - BASE, Inc.
    PHP
    Swoole PHP

    View Slide

  93. © - BASE, Inc.

    View Slide

  94. © - BASE, Inc.

    View Slide