Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Swoole in 5 Minutes [en]
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Christoph Lühr
February 06, 2018
Technology
12k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swoole in 5 Minutes [en]
Blazingly-Fast, Event-Driven, Asynchronous PHP. Berlin PHP Usergroup 02/06/2018
Christoph Lühr
February 06, 2018
More Decks by Christoph Lühr
See All by Christoph Lühr
Vektor-Suche & LLMs
chluehr
0
160
Search, Embeddings & Vector-DBs
chluehr
0
200
Reality Check: Automated Content Production at Enterprise Scale with Pimcore
chluehr
0
120
The how and why of getting Freelancers
chluehr
0
100
Content & Master Data Management with Pimcore
chluehr
1
780
Master Data Management with Pimcore
chluehr
0
250
PIM & Master Data Management with Pimcore 5 [en]
chluehr
2
350
Digital Transformation & Master Data Management with Pimcore 5
chluehr
0
280
LXD System Containers [en]
chluehr
0
410
Other Decks in Technology
See All in Technology
Lint の層を組み直した話
bengo4com
3
310
AIエージェント時代、Kaggleにどう取り組むか
takanao
2
500
AIエージェントに業務知識を届ける仕組みづくり - Knowledge Catalogを活用した知識基盤の構築
hekuchan
0
130
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
800
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
110
生き様としてのSRE
hokkai7go
1
170
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
700
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
540
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
3k
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
410
Jev の中身は50行で再現できる。でも本物との差はどこにあるのか
hisuzuya
0
300
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
120
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
640
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
450
Raft: Consensus for Rubyists
vanstee
143
7.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
How to make the Groovebox
asonas
2
2.5k
Speed Design
sergeychernyshev
33
2.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
430
Crafting Experiences
bethany
1
420
エンジニアに許された特別な時間の終わり
watany
109
250k
New Earth Scene 8
popppiees
4
2.8k
The Pragmatic Product Professional
lauravandoore
37
7.5k
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
[email protected]
[email protected]
@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/