Slide 1

Slide 1 text

Christoph Lühr @chluehr / bephpug 2018 "Fast, faster, Swoole" Teaser: Swoole in 5 Minutes

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

SIN CE 2000

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

"Blazingly-Fast, Event-Driven, Asynchronous PHP."

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

$ pecl install swoole

Slide 8

Slide 8 text

$ brew install swoole

Slide 9

Slide 9 text

on('Request', function ($request, $response) { $response->end('OK'); }); $server->start();

Slide 10

Slide 10 text

addReadStream($server, function ($server) use ($loop) { $conn = stream_socket_accept($server); $data = "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nHi\n"; $loop->addWriteStream($conn, function ($conn) use (&$data, $loop) { $written = fwrite($conn, $data); if ($written === strlen($data)) { fclose($conn); $loop->removeStream($conn); } else { $data = substr($data, $written); } }); }); $loop->run();

Slide 11

Slide 11 text

PHP-PM

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Sugar and Cream? (PHP is not enough ...)

Slide 14

Slide 14 text

Async IO

Slide 15

Slide 15 text

File I/O (and some tagline to go along)

Slide 16

Slide 16 text

TCP Clients MySQL / Redis / HTTP / WebSocket

Slide 17

Slide 17 text

"Reality Distortion" BENCHMARKS

Slide 18

Slide 18 text

300.000 Req/Sec

Slide 19

Slide 19 text

wrk -t4 -c400 -d10s http://127.0.0.1:1337/ Running 10s test @ http://127.0.0.1:1337/ 4 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.46ms 1.42ms 27.96ms 85.66% Req/Sec 75.29k 36.43k 183.55k 72.75% 3007806 requests in 10.06s, 605.25MB read Requests/sec: 299103.32 Transfer/sec: 60.19MB

Slide 20

Slide 20 text

wrk -t16 -c400 -d30s http://localhost:9000/ Running 30s test @ http://localhost:9000/ 16 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 6.97ms 7.07ms 226.95ms 93.28% Req/Sec 4.00k 0.96k 15.36k 76.15% 1909179 requests in 30.09s, 282.21MB read Requests/sec: 63442.77 Transfer/sec: 9.38MB

Slide 21

Slide 21 text

Demo

Slide 22

Slide 22 text

Real World(tm) References?

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

To good to be true...? DRAWBACKS

Slide 26

Slide 26 text

中文

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Thanks! Questions? Christoph Lühr [email protected] [email protected] @chluehr Slides license Attribution-NonCommercial-ShareAlike 3.0 http://creativecommons.org/licenses/by-nc-sa/3.0/

Slide 29

Slide 29 text

● Swoole 2.0 https://www.swoole.co.uk/