Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Tutorial PHP: Apa itu PHP Swoole?

Posted on November 30, 2019 by Syauqi Wiryahasana
Apakah Swoole itu? Swoole adalah sebuah extension PHP yang memungkinkan progammer PHP menulis sebuah code yang high-performance, scalable, concurent, dan asyncronous. Baik itu TCP, UDP, Unix Socket, HTTP1, HTTP2 dan Websocket. Secara sederhana, bisa dibilang, Swoole adalah jawaban hinaan dari komunitas NodeJS yang mencari kemampuan asyncronous dan scalable di PHP. Contoh HTTP Server bawaan Swoole: [sourcecode language="php"] <?php $http = new swoole_http_server("127.0.0.1", 9501); $http->on("start", function ($server) { echo "Swoole http server is started at http://127.0.0.1:9501\n"; }); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World\n"); }); $http->start(); [/sourcecode] kemudian contoh Swoole Websocket: [sourcecode language="php"] <?php $server = new swoole_websocket_server("127.0.0.1", 9502); $server->on('open', function($server, $req) { echo "connection open: {$req->fd}\n"; }); $server->on('message', function($server, $frame) { echo "received message: {$frame->data}\n"; $server->push($frame->fd, json_encode(["hello", "world"])); }); $server->on('close', function($server, $fd) { echo "connection close: {$fd}\n"; }); $server->start(); [/sourcecode] dan contoh asyncronous task: [sourcecode language="php"] <?php $server = new swoole_server("127.0.0.1", 9502); $server->set(array('task_worker_num' => 4)); $server->on('receive', function($server, $fd, $from_id, $data) { $task_id = $server->task("Async"); echo "Dispath AsyncTask: [id=$task_id]\n"; }); $server->on('task', function ($server, $task_id, $from_id, $data) { echo "New AsyncTask[id=$task_id]\n"; $server->finish("$data -> OK"); }); $server->on('finish', function ($server, $task_id, $data) { echo "AsyncTask[$task_id] finished: {$data}\n"; }); $server->start(); [/sourcecode]

Hasil Benchmark Swoole

Klaim lebih cepat dibanding setup PHP biasa, baik menggunakan Apache maupun NGINX/PHP-FPM, bisa dilihat dan dicoba sendiri dari repo Github: https://gist.github.com/nkt/e49289321c744155484c Contoh hasilnya: a. PHP + Swoole
Running 10s test @ http://127.0.0.1:1337/
  4 threads and 400 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.02ms    6.94ms  82.86ms   85.27%
    Req/Sec   827.17    552.85     2.38k    66.54%
  22543 requests in 10.07s, 3.61MB read
  Socket errors: connect 151, read 22680, write 86, timeout 0
Requests/sec:   2238.19
Transfer/sec:    367.20KB
dan jika dengan NodeJS:
Running 10s test @ http://127.0.0.1:1337/
  4 threads and 400 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    20.34ms    4.50ms 125.04ms   97.89%
    Req/Sec     3.09k     1.93k    6.06k    55.00%
  122838 requests in 10.02s, 23.66MB read
  Socket errors: connect 151, read 69, write 73, timeout 0
Requests/sec:  12263.37
Transfer/sec:      2.36MB
Menarik kan? Nah pada seri tutorial PHP kali ini kita akan membahas PHP Swoole dan Laravel.
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically