Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Swoole in 5 Minutes [en]
Search
Christoph Lühr
February 06, 2018
Technology
1
12k
Swoole in 5 Minutes [en]
Blazingly-Fast, Event-Driven, Asynchronous PHP. Berlin PHP Usergroup 02/06/2018
Christoph Lühr
February 06, 2018
Tweet
Share
More Decks by Christoph Lühr
See All by Christoph Lühr
Vektor-Suche & LLMs
chluehr
0
62
Search, Embeddings & Vector-DBs
chluehr
0
82
Reality Check: Automated Content Production at Enterprise Scale with Pimcore
chluehr
0
46
The how and why of getting Freelancers
chluehr
0
62
Content & Master Data Management with Pimcore
chluehr
1
560
Master Data Management with Pimcore
chluehr
0
180
PIM & Master Data Management with Pimcore 5 [en]
chluehr
2
290
Digital Transformation & Master Data Management with Pimcore 5
chluehr
0
220
LXD System Containers [en]
chluehr
0
290
Other Decks in Technology
See All in Technology
BCMathを高速化した一部始終をC言語でガチ目に解説する / BCMath performance improvement explanation
sakitakamachi
2
1.1k
Amazon Q Developer 他⽣成AIと⽐較してみた
takano0131
1
110
モジュラーモノリスでスケーラブルなシステムを作る - BASE のリアーキテクチャのいま
panda_program
7
1.8k
ドメインイベントを活用したPHPコードのリファクタリング
kajitack
2
1k
年末調整プロダクトの内部品質改善活動について
kaomi_wombat
0
140
Engineering Managementのグローバルトレンド #emoasis / Engineering Management Global Trend
kyonmm
PRO
6
940
バクラクでのSystem Risk Records導入による変化と改善の取り組み/Changes and Improvement Initiatives Resulting from the Implementation of System Risk Records
taddy_919
0
190
パスキーでのログインを 実装してみよう!
hibiki_cube
0
570
Keynote - KCD Brazil - Platform Engineering on K8s (portuguese)
salaboy
0
120
SLI/SLO・ラプソディあるいは組織への適用の旅
nwiizo
4
1.1k
IAMのマニアックな話 2025 ~40分バージョン ~
nrinetcom
PRO
4
660
View Transition API
shirakaba
1
850
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
172
14k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
2k
The Cost Of JavaScript in 2023
addyosmani
48
7.6k
GitHub's CSS Performance
jonrohan
1030
460k
Code Review Best Practice
trishagee
67
18k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
8
690
Faster Mobile Websites
deanohume
306
31k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Transcript
Christoph Lühr @chluehr / bephpug 2018 "Fast, faster, Swoole" Teaser:
Swoole in 5 Minutes
None
SIN CE 2000
None
"Blazingly-Fast, Event-Driven, Asynchronous PHP."
None
$ pecl install swoole
$ brew install swoole
<?php $server = new \Swoole\Http\Server('0.0.0.0', 9000); $server->on('Request', function ($request, $response)
{ $response->end('OK'); }); $server->start();
<?php $loop = React\EventLoop\Factory::create(); $server = stream_socket_server('tcp://0.0.0.0:9000'); stream_set_blocking($server, 0); $loop->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();
PHP-PM
None
Sugar and Cream? (PHP is not enough ...)
Async IO
File I/O (and some tagline to go along)
TCP Clients MySQL / Redis / HTTP / WebSocket
"Reality Distortion" BENCHMARKS
300.000 Req/Sec
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
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
Demo
Real World(tm) References?
None
None
To good to be true...? DRAWBACKS
中文
None
Thanks! Questions? Christoph Lühr luehr@r-pentomino.de christoph.luehr@basilicom.de @chluehr Slides license Attribution-NonCommercial-ShareAlike
3.0 http://creativecommons.org/licenses/by-nc-sa/3.0/
• Swoole 2.0 https://www.swoole.co.uk/