Menggunakan Swoole di ServBay untuk Membangun Aplikasi PHP Berperforma Tinggi
ServBay adalah lingkungan pengembangan web lokal yang dirancang khusus untuk developer, dengan integrasi berbagai bahasa pemrograman, database, dan alat bantu demi memudahkan workflow pengembangan lokal. Pada artikel ini, Anda akan dipandu cara memanfaatkan ekstensi Swoole di ServBay untuk memperkuat aplikasi PHP — memungkinkan Anda membangun layanan jaringan berperforma tinggi.
Apa Itu Swoole?
Swoole adalah mesin komunikasi jaringan paralel dan berperforma tinggi untuk PHP, berbasis coroutine. Ditulis dalam bahasa C, Swoole menyediakan fitur asinkron, paralel, serta komunikasi berbasis coroutine untuk PHP. Dengan Swoole, developer PHP bisa keluar dari keterbatasan model request-response server web tradisional (seperti Apache/Nginx + PHP-FPM) dan menangani berbagai tugas dengan efisiensi tinggi: seperti membangun server web resident-memory, proses asinkron, layanan komunikasi real-time (misal WebSocket), dll.
Fitur utama Swoole:
- Performa tinggi: Implementasi C di layer bawah, mendukung I/O asinkron, multi-proses dan multi-threading.
- Coroutine: Menyediakan coroutine ringan yang memungkinkan penulisan kode sinkron dengan eksekusi asinkron, menyederhanakan model kode asinkron.
- Dukungan protokol luas: Native mendukung berbagai protokol seperti TCP/UDP/HTTP/WebSocket.
- Mudah digunakan: Memiliki API yang ringkas dan sesuai kebiasaan developer PHP.
- Resident memory: Aplikasi berjalan sebagai proses resident, sehingga tidak memerlukan inisialisasi lingkungan PHP pada setiap request seperti aplikasi PHP tradisional.
Dengan Swoole, PHP tidak sekadar menjadi bahasa scripting web, namun bisa diandalkan untuk membangun aplikasi jaringan berperforma tinggi dalam berbagai skenario.
Cara Mengaktifkan Swoole di ServBay
Salah satu tujuan utama ServBay adalah memudahkan developer dalam mengelola dan menggunakan berbagai ekstensi PHP. Swoole, sebagai ekstensi krusial untuk pengembangan PHP modern yang cepat, sudah langsung tersedia di ServBay; Anda dapat mengaktifkannya dengan langkah mudah.
Prasyarat:
- ServBay sudah terinstall dan berjalan.
- Setidaknya satu versi PHP sudah terinstall di ServBay.
Langkah-langkah aktivasi:
- Buka antarmuka aplikasi ServBay.
- Masuk ke bagian “Packages” (Paket) atau panel pengelolaan versi PHP. (Catatan: Nama masuk bisa berbeda tergantung versi ServBay, biasanya ada di halaman utama atau bagian pengaturan)
- Pilih versi PHP yang ingin diaktifkan ekstensi Swoole.
- Cari opsi ekstensi Swoole dan centang agar aktif. ServBay biasanya menampilkan daftar ekstensi siap pakai dalam bentuk list/switch.
- Simpan perubahan dan restart ServBay atau service PHP sesuai petunjuk. ServBay akan mengatur ulang environment PHP agar memuat ekstensi Swoole.
Setelah selesai, Anda sudah bisa memakai Swoole di versi PHP yang dipilih. Untuk mengecek, jalankan perintah php -m
di terminal dan pastikan swoole
muncul di daftar ekstensi yang aktif.
TIP
Secara default, ServBay menganjurkan agar file website & proyek Anda diatur di direktori berikut agar lebih mudah dikelola dan dikonfigurasi:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Contoh pada artikel ini juga menggunakan path rekomendasi di atas.
Membuat Server HTTP Swoole Sederhana
Berikut adalah cara membuat server HTTP sederhana menggunakan Swoole untuk menerima request web.
Langkah 1: Buat Direktori Proyek
Buka terminal, buat dan masuk ke direktori proyek baru sesuai path rekomendasi ServBay:
macOS:
bash
cd /Applications/ServBay/www
mkdir servbay-swoole-http
cd servbay-swoole-http
1
2
3
2
3
Windows:
cmd
cd C:\ServBay\www
mkdir servbay-swoole-http
cd servbay-swoole-http
1
2
3
2
3
Langkah 2: Tulis Skrip Server
Di dalam folder servbay-swoole-http
, buat file bernama server.php
berisi kode berikut:
php
<?php
use Swoole\Http\Server;
use Swoole\Http\Request;
use Swoole\Http\Response;
// Membuat instance server HTTP Swoole
// Mendengarkan pada semua interface (0.0.0.0) di port 9501
$server = new Server("0.0.0.0", 9501);
// Registrasi fungsi callback event 'start'
// Trigger saat server berhasil dijalankan
$server->on("start", function (Server $server) {
echo "Swoole HTTP server is started at http://0.0.0.0:9501\n";
// Anda bisa mencatat ID proses utama, ID proses manajemen, dan lainnya di sini
});
// Registrasi fungsi callback event 'request'
// Trigger setiap kali server menerima HTTP request baru
$server->on("request", function (Request $request, Response $response) {
// Set header response
$response->header("Content-Type", "text/plain");
// Proses logika sesuai path atau parameter request
$path = $request->server['request_uri'] ?? '/';
$content = "Hello ServBay!";
if ($path === '/info') {
$content = "Request path: " . $path . "\n";
$content .= "Method: " . $request->server['request_method'] . "\n";
$content .= "Client IP: " . $request->server['remote_addr'] . "\n";
// Info lain dari request bisa diakses melalui objek $request
}
// Kirim respons dan akhiri request
$response->end($content);
});
// Jalankan server
$server->start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Skrip di atas membuat server HTTP Swoole di port 9501. Setiap request akan mendapat respons teks "Hello ServBay!", dan jika mengakses path /info
akan menampilkan detail request.
Langkah 3: Jalankan Server Swoole
Pastikan terminal Anda berada di direktori servbay-swoole-http
. Jalankan skrip menggunakan PHP ServBay yang sudah diaktifkan ekstensi Swoole:
bash
php server.php
1
Jika berhasil, tampilan terminal akan menunjukkan:
bash
Swoole HTTP server is started at http://0.0.0.0:9501
1
Artinya server HTTP Swoole sudah berjalan dan mendengarkan port 9501.
Langkah 4: Akses Server Swoole
Buka browser lalu kunjungi:
http://localhost:9501
http://localhost:9501/info
Halaman akan menampilkan “Hello ServBay!” dan pada /info
menampilkan detail request.
Untuk menghentikan server, kembali ke terminal yang menjalankan skrip dan tekan Ctrl + C
.
Mengelola Koneksi WebSocket dengan Swoole
Swoole mendukung protokol WebSocket secara native, sangat ideal untuk aplikasi komunikasi real-time — seperti chat, game server, atau push data real-time.
Langkah 1: Tulis Skrip Server WebSocket
Di direktori proyek Anda (misal di servbay-swoole-http
atau bisa buat folder baru seperti servbay-swoole-websocket
), buat file bernama websocket_server.php
dengan isi sebagai berikut:
Path direktori proyek:
- macOS:
/Applications/ServBay/www/servbay-swoole-http
- Windows:
C:\ServBay\www\servbay-swoole-http
php
<?php
use Swoole\WebSocket\Server;
use Swoole\Http\Request;
use Swoole\WebSocket\Frame;
// Membuat instance server WebSocket Swoole
// Server WebSocket juga bisa menangani HTTP request
$server = new Server("0.0.0.0", 9502); // Listen di port 9502
// Registrasi event 'start', trigger saat server berjalan
$server->on("start", function (Server $server) {
echo "Swoole WebSocket server is started at ws://0.0.0.0:9502\n";
});
// Registrasi event 'open'
// Trigger saat koneksi WebSocket baru dibuat
// Objek $request berisi info client, $request->fd adalah file descriptor client
$server->on("open", function (Server $server, Request $request) {
echo "connection open: {$request->fd}\n";
// Anda bisa mengirim pesan selamat datang ke client
$server->push($request->fd, "Welcome to ServBay WebSocket Demo!");
});
// Registrasi event 'message'
// Trigger saat server menerima pesan WebSocket dari client
// Objek $frame berisi info pesan — $frame->data adalah isi, $frame->fd adalah file descriptor pengirim
$server->on("message", function (Server $server, Frame $frame) {
echo "received message from {$frame->fd}: {$frame->data}\n";
// Bisa broadcast ke seluruh client atau membalas pengirim
// Contoh: membalas pengirim
$server->push($frame->fd, "Hello, you sent: {$frame->data}");
// Contoh broadcast (perlu menyimpan list koneksi atau melakukan iterasi)
// foreach ($server->connections as $fd) {
// if ($fd != $frame->fd) { // Jangan kirim ke pengirimnya sendiri
// $server->push($fd, "User {$frame->fd} says: {$frame->data}");
// }
// }
});
// Registrasi event 'close'
// Trigger saat client memutuskan koneksi
$server->on("close", function ($ser, $fd) {
echo "connection close: {$fd}\n";
});
// Jalankan server
$server->start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Skrip di atas membuat server WebSocket Swoole di port 9502, dengan event: start
(server aktif), open
(koneksi masuk baru), message
(pesan diterima), dan close
(koneksi client tertutup). Pada event message
, server mengirim balik pesan ke client dengan awalan.
Langkah 2: Jalankan Server WebSocket
Pastikan terminal berada di folder tempat websocket_server.php
berada. Gunakan PHP ServBay ber-Swoole untuk menjalankannya:
bash
php websocket_server.php
1
Jika sukses, terminal akan menampilkan:
bash
Swoole WebSocket server is started at ws://0.0.0.0:9502
1
Ini artinya server WebSocket sudah berjalan di port 9502.
Langkah 3: Hubungkan ke Server WebSocket
Ada banyak cara mengetes server WebSocket ini.
Cara A: Browser Developer Tools
Mayoritas browser modern menyediakan panel “Network” atau “Console” di Developer Tools (tekan F12). Anda bisa gunakan untuk tes koneksi WebSocket:
Buka halaman kosong (misal
about:blank
).Buka Developer Tools dan masuk ke panel “Console”.
Lalu masukkan script JavaScript berikut:
javascriptvar ws = new WebSocket("ws://localhost:9502"); ws.onopen = function(event) { console.log("WebSocket connection opened:", event); ws.send("Hello from Browser!"); // Kirim pesan saat koneksi terbuka }; ws.onmessage = function(event) { console.log("Message from server:", event.data); // Pesan dari server }; ws.onerror = function(event) { console.error("WebSocket error:", event); // Jika terjadi error }; ws.onclose = function(event) { console.log("WebSocket connection closed:", event); // Koneksi tertutup }; // Kirim pesan dengan ws.send("pesan Anda") // Tutup koneksi dengan ws.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Jalankan script tadi dan amati output di console. Di terminal server
websocket_server.php
juga akan muncul log event koneksi dan pesan.
Cara B: Gunakan Tool CLI wscat
wscat
adalah client WebSocket berbasis Node.js yang mudah digunakan di terminal.
Install
wscat
: Jika Node.js dan npm belum terpasang, install terlebih dahulu. Lalu instalasiwscat
dengan:bashnpm install -g wscat
1Hubungkan ke server WebSocket: Jalankan perintah berikut di terminal:
bashwscat -c ws://localhost:9502
1Jika terhubung, muncul prompt
>
.Kirim pesan: Ketik pesan lalu tekan enter:
bash> Hello ServBay via wscat
1Server akan membalas dan Anda melihatnya di prompt, awalan dengan
<
:bash< Hello, you sent: Hello ServBay via wscat
1Di sisi server, terminal juga memunculkan log pesan masuk.
Untuk putus koneksi di wscat
, tekan Ctrl + C
.
Catatan Penting
- Konflik port: Pastikan port server Swoole (misal 9501, 9502) tidak digunakan program lain di komputer agar server bisa berjalan.
- Versi PHP: Jalankan skrip menggunakan versi PHP ServBay yang sudah diaktifkan ekstensi Swoole. Untuk cek versi PHP di terminal gunakan
php -v
. ServBay biasanya menyediakan tool switching versi PHP. - Status ekstensi: Jika server gagal dijalankan, cek ulang apakah ekstensi Swoole sudah aktif di PHP yang digunakan, serta sudah restart ServBay/PHP sesuai instruksi.
- Manajemen proses resident: Server Swoole adalah proses resident di memori. Di produksi sebaiknya pakai tool manajemen proses (seperti Supervisor, Systemd, pm2) untuk menjaga agar proses tetap berjalan dan auto restart jika crash. Untuk pengembangan lokal ServBay, menjalankan manual di terminal biasanya sudah cukup.
Kesimpulan
Dengan ServBay, Anda dapat dengan mudah mengaktifkan dan menggunakan ekstensi Swoole untuk membangun dan mengetes aplikasi PHP berperforma tinggi di lingkungan pengembangan lokal — baik aplikasi HTTP konvensional maupun layanan real-time WebSocket modern. Kombinasi kekuatan Swoole dan kemudahan ServBay membuka peluang baru bagi developer PHP untuk membangun aplikasi yang efisien dan tangguh. Yuk, langsung coba Swoole di ServBay sekarang juga!