Belajar Swoole - Framework Integration (Laravel, Hyperf, Swoft)
Episode 15 of 26

Belajar Swoole - Framework Integration (Laravel, Hyperf, Swoft)

Memanfaatkan Swoole lewat framework: memahami Hyperf sebagai framework coroutine native, Swoft sebagai pendahulunya, dan Laravel Octane dengan driver Swoole, plus setup proyek pertama di tiap framework.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 14 kita membangun consumer message broker — pada episode kali ini kita meletakkan semua fondasi manual yang sudah kalian pelajari di atas framework. Menulis server dari nol seperti episode 4-14 adalah latihan terbaik, tetapi di produksi kalian hampir pasti memakai framework: routing, middleware, dependency injection, dan ORM yang sudah jadi.

Mengapa episode ini penting? Karena pilihan framework menentukan produktivitas tim. Swoole punya ekosistem tiga jalur: Hyperf (coroutine native), Swoft (pelopornya), dan Laravel Octane (jalan untuk tim yang sudah Laravel). Memahami perbedaannya membantu kalian memilih yang tepat.

Tiga Jalur Framework Swoole

FrameworkModelKapan dipilih
HyperfCoroutine-native, dibangun di atas SwooleProyek baru yang butuh performa maksimal
SwoftSwoole-native (pendahulu Hyperf)Proyek legacy Swoft / preferensi annotation
Laravel OctaneLaravel + app server (Swoole/OpenSwoole/RoadRunner)Tim sudah Laravel, ingin pindah tanpa ganti framework

Hyperf: Framework Coroutine Native

Hyperf dibangun langsung di atas Swoole — setiap request berjalan dalam coroutine, dan semua komponennya (server, client, pool, timer) adalah warga negara coroutine. Ini pilihan utama untuk proyek Swoole baru.

Setup Proyek

Buat proyek Hyperf
composer create-project hyperf/hyperf-skeleton hyperf-lab
cd hyperf-lab
php bin/hyperf.php start

Server berjalan di 0.0.0.0:9501. Verifikasi:

Tes HTTP server Hyperf
curl http://127.0.0.1:9501/

Struktur Kunci

Struktur proyek Hyperf
hyperf-lab/
  app/
    Controller/     # HTTP controller (berjalan dalam coroutine)
    Middleware/     # Middleware PSR-15
    Service/        # Layer bisnis
    Process/        # Custom process (addProcess ala episode 10)
  config/
    autoload/
      server.php    # worker_num, task_worker_num, dll
      dependencies.php
  bin/hyperf.php    # CLI entry

Contoh Controller Hyperf

Controller Hyperf
<?php
declare(strict_types=1);
 
namespace App\Controller;
 
use Hyperf\HttpServer\Annotation\Controller;
use Hyperf\HttpServer\Annotation\RequestMapping;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Contract\ResponseInterface;
use Hyperf\DbConnection\Db;
 
#[Controller]
class UserController
{
    #[RequestMapping(path: '/users/{id}', methods: ['get'])]
    public function show(int $id, RequestInterface $request, ResponseInterface $response)
    {
        // query berjalan di coroutine + connection pool otomatis
        $user = Db::table('users')->find($id);
        return $response->json($user);
    }
}

Perhatikan: Db::table() di Hyperf memakai pool secara otomatis — apa yang kita bangun manual di episode 13 sudah menjadi default framework.

Konfigurasi Server Hyperf

config/autoload/server.php (potongan)
return [
    'mode' => SWOOLE_PROCESS,
    'servers' => [
        [
            'name' => 'http',
            'host' => '0.0.0.0',
            'port' => 9501,
            'type' => SWOOLE_HTTP,
        ],
    ],
    'settings' => [
        'worker_num' => swoole_cpu_num(),
        'max_request' => 100000,
        'task_worker_num' => 8,
        'enable_coroutine' => true,
    ],
];

Swoft: Pendahulu yang Masih Dipakai

Swoft muncul 2018 sebagai framework Swoole coroutine pertama yang populer. Gayanya berbasis annotation (mirip Spring Boot di Java), dan masih dipakai di banyak codebase legacy. Konsep inti — coroutine, pool, process — identik dengan yang sudah kalian pelajari. Jika bertemu Swoft di pekerjaan kalian, kalian sudah tahu 80% isinya.

Laravel Octane dengan Driver Swoole

Laravel Octane adalah paket resmi Laravel untuk menjalankan aplikasi Laravel di atas app server (Swoole, RoadRunner, FrankenPHP). Setup-nya:

Install Octane
composer require laravel/octane
php artisan octane:install --server=swoole

Menjalankan server:

Jalankan Octane Swoole
php artisan octane:start --host=127.0.0.1 --port=8000

Octane membawa aplikasi Laravel hidup terus — bootstrap sekali, tidak per-request. Konsekuensi yang harus dipahami:

PerilakuFPMOctane
Bootstrap aplikasiTiap requestSekali di awal
Static properties / service containerReset tiap requestBertahan — wajib di-reset manual
Memory leakHilang tiap requestMenumpuk — perlu dijaga

Warning

Bahaya terbesar migrasi ke Octane adalah state yang tidak sengaja bertahan: static properties, closure yang menangkap data request, dan koneksi DB/Redis yang tidak ditutup. Octane menyediakan hook Octane::tick() dan $app->flush() per-request, dan ada paket laravel/octane + laravel/horizon yang wajib disesuaikan. Jangan asal pindah — audit dulu kode global state-nya.

Warm-up Worker

Octane punya fitur warm-up: menjalankan kode sekali saat worker lahir, sehingga request pertama tidak lambat:

Warm-up koneksi di Octane
// config/octane.php
'warm' => [
    // komponen yang dimuat sekali di tiap worker
    \App\Models\User::class,
],

Memilih Framework

Panduan cepat:

  • Proyek baru, tim kecil, fokus performa → Hyperf. Ekosistem coroutine-native paling lengkap.
  • Sudah Laravel, mau efisiensi tanpa migrasi besar → Laravel Octane (Swoole driver). Hitung dulu biaya audit global state.
  • Legacy Swoft / tuntutan annotation → Swoft. Kurangi penggunaan baru bila memungkinkan.

Common Pitfalls

MasalahPenyebabSolusi
502 timeout setelah migrasi Octanemax_execution_time / pool kecilSet max_request besar, sesuaikan worker_num
Data bocor antar request (Hyperf)Static property di controllerJangan pakai static untuk state request
Hyperf tidak jalan, port bentrokServer Hyperf lama masih berjalanphp bin/hyperf.php berhenti / pkill -f hyperf.php
Octane memory naik terusKoneksi/library tidak di-reset per requestGunakan hook flush, tutup resource di terminating

Penutup

Pada episode 15 ini, kalian telah memetakan ekosistem framework Swoole.

Inti yang harus dibawa pulang:

  • Hyperf: framework coroutine-native — default untuk proyek Swoole baru.
  • Swoft: pendahulu berbasis annotation, masih dipakai di legacy.
  • Laravel Octane: Laravel + Swoole — waspadai state yang bertahan antar request.
  • Semua fondasi manual (pool, process, coroutine) menjadi default di framework-framework ini.

Di episode 16 selanjutnya, kita masuk ke arsitektur microservices: gRPC & JSON-RPC — membangun service gRPC dengan Swoole, JSON-RPC, dan service discovery. Sampai jumpa di episode 16!

Belajar Swoole - Framework Integration (Laravel, Hyperf, Swoft) | Belajar Swoole