Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Concurency di PHP: Sebuah Contoh Sederhana

Posted on May 28, 2024

Sebagai seseorang yang jatuh cinta dengan PHP, bekerja dengan bahasa ini selama hampir 10 tahun, dan kemudian pindah ke negara lain sebagai Insinyur Perangkat Lunak, di mana sebagian besar pengalaman saya adalah dalam PHP, saya selalu merasa iri dengan bahasa pemrograman lain yang memiliki alat yang baik untuk menangani konkurensi.

Saya tidak yakin apakah suatu hari PHP bisa mencapai titik tersebut, dan saya berasumsi bahwa ini mungkin bukan sesuatu yang sedang diupayakan. Saya harus mengakui bahwa saya menikmati bekerja dengan Promises di JavaScript. Saya juga menyukai bagaimana konkurensi diimplementasikan di Go dengan channels, select, goroutines, dan fitur lainnya. Jadi, ketika bekerja dengan PHP, saya merasa ada sesuatu yang kurang.

Namun, di tahun 2024 ini, segalanya tampak berbeda. Saya sangat bersemangat dengan semua kolaborasi dan alat baru yang telah ditambahkan ke komunitas PHP dan proyek-proyeknya. Bahasanya tampak lebih stabil, alat-alatnya tampak lebih matang, dan banyak perusahaan, termasuk startup dan perusahaan besar, dibangun di atas PHP. Mengenai startup, saya tidak bisa memikirkan opsi lain yang lebih baik untuk membentuk produk selain menggunakan framework PHP!

Inovasi Terbaru dalam PHP

Ada beberapa hal yang menurut saya sangat berharga dan layak untuk dicoba:

  • Laravel Octane
  • FrankenPHP

Apa Itu Konkurensi?

Dalam ilmu komputer, konkurensi adalah kemampuan dari berbagai bagian atau unit dari sebuah program, algoritma, atau masalah untuk dieksekusi tidak sesuai urutan atau dalam urutan parsial, tanpa mempengaruhi hasil akhir.

– Wikipedia

Bayangkan Anda sedang bekerja dengan skrip CLI yang melakukan tugas-tugas yang memakan waktu dan bisa dipecah menjadi tugas-tugas yang lebih kecil. Ini bisa berupa pemanggilan beberapa endpoint REST, menyimpan dan membaca data ke dalam basis data, perubahan sistem file, atau tugas lainnya. Biasanya dalam PHP, kode berjalan baris demi baris dan thread utama selalu melakukan satu hal pada satu waktu. Kita tidak memiliki forking dan joining thread anak ke thread utama secara default, tetapi kita bisa memanfaatkan paket kecil dari composer untuk mencapai itu. Yang perlu Anda lakukan adalah menambahkan paket spatie/fork ke proyek Anda. Paket ini membutuhkan modul pcntl dan sockets untuk bekerja. Pastikan Anda memiliki modul ini dalam proyek Anda.

Jika Anda menjalankan php -m di terminal Anda, Anda harus melihat modul-modul ini sebagai berikut:

shellCopy code[PHP Modules]
...
pcntl
sockets
...

Saatnya Koding

Bayangkan Anda memiliki fungsi yang lambat dan Anda bergantung pada hasilnya. Yang dilakukan fungsi ini adalah menghitung dari 0 hingga 100 juta.

phpCopy codefunction timeConsumingFunction($to = 100000000): int
{
    $sum = 0;
    for ($i = 0; $i < $to; $i++) {
        $sum++;
    }

    return $sum;
}

Biasanya kita menulis sesuatu seperti ini:

phpCopy codeecho array_sum(
    [
        timeConsumingFunction(),
        timeConsumingFunction(),
        timeConsumingFunction(),
    ]
);

Berapa lama waktu yang dibutuhkan? Mari kita uji waktu:

phpCopy code$start_time = microtime(TRUE);

echo "Result: " . array_sum(
    [
        timeConsumingFunction(),
        timeConsumingFunction(),
        timeConsumingFunction(),
    ]
);

$end_time = microtime(TRUE);

echo PHP_EOL . "Time: " . $end_time - $start_time;

Seperti yang dapat Anda lihat pada output di bawah ini, waktu yang dibutuhkan sekitar 4 detik. Ini dapat bervariasi berdasarkan kekuatan komputasi, memori, dan lain-lain. Tugas kita ini cukup intensif terhadap CPU.

Menggunakan Fork untuk Konkurensi

Sekarang, mari kita tulis kode ini dengan cara yang berbeda menggunakan Fork!

phpCopy code$start_time = microtime(TRUE);

$results = \Spatie\Fork\Fork::new()->run(
    function () {
        return timeConsumingFunction();
    },
    function () {
        return timeConsumingFunction();
    },
    function () {
        return timeConsumingFunction();
    }
);

echo "Result: " . array_sum($results);

$end_time = microtime(TRUE);

echo PHP_EOL . "Time: " . $end_time - $start_time;

Dalam contoh ini, kita menggunakan \Spatie\Fork\Fork yang memungkinkan kita membuat tiga tugas berbeda dan mengagregasi hasil dari masing-masing.

Mari kita lihat hasilnya:

shellCopy codeResult: 300000000
Time: 1.5

Seperti yang Anda lihat, kita telah mengurangi waktu dari 4,3 detik menjadi 1,5 detik 🎉

Apa yang Bisa Dilakukan Selanjutnya?

Saya sangat merekomendasikan untuk memeriksa halaman GitHub spatie/fork. Halaman ini memiliki instruksi yang jelas untuk para pengembang. Saya percaya ini adalah salah satu paket open-source hebat yang dibuat oleh Spatie.

Anda juga harus menonton video ini:

Artikel ini hanya merupakan pengantar sederhana untuk membahas konkurensi di PHP. Masih banyak hal bagus di internet yang saya rekomendasikan untuk dibaca jika Anda menyukai konsep ini.

Semoga harimu menyenangkan!

Terbaru

  • Inilah Daftar Kode Redeem Blox Fruits Terbaru dan Cara Pakainya Biar Cepat Level Max!
  • Ini Trik Supaya YouTube Shorts Kalian Ranking 1 di Pencarian
  • Inilah Daftar Kode Redeem Fish It Roblox Terbaru April 2026 dan Cara Klaimnya Biar Mancing Makin Gacor!
  • Inilah Cara Tarik Saldo Cool Lady, Game Penghasil Uang yang Lagi Viral dan Terbukti Membayar!
  • Inilah Kode Redeem Drag Drive Simulator April 2026, Simak Trik Rahasia Biar Menang Balapan Terus!
  • Inilah Little Finder Guy, Strategi Unik Apple yang Bikin MacBook Neo Jadi Viral di Media Sosial
  • Inilah Yang Baru di Minecraft Java Edition 26.1.1, Perubahan Mob Bayi Jadi Lebih Realistis dan Fitur Baru yang Bikin Gameplay Makin Seru!
  • Inilah Cara Bayar UKT UIN Sunan Kalijaga 2026 Lewat Kode Bayar Biar Nggak Bingung Lagi!
  • Inilah Syarat Penting Surat Keterangan Kelas 12 UTBK 2026 dan Contohnya
  • Belum Tahu? Inilah Cara Bayar UTBK SNBT 2026 Online Biar Nggak Ketinggalan Jadwal!
  • Inilah Kebenaran Kasus Bayu, Siswa yang Viral Katanya Dilengserkan dari Ketua OSIS Gegara Kritik Makan Bergizi Gratis
  • Inilah 4 Cara Jitu Jualan Produk Digital Pakai Google, Dijamin Cuan Terus!
  • Inilah Sinopsis dan Jadwal Tayang Drakor Perfect Crown, Kisah Pernikahan Kontrak IU dan Byun Woo-seok yang Menarik untuk Disimak!
  • Inilah Rekomendasi Game Tata Kota Terbaik di Linux yang Seru Banget Buat Dimainkan
  • Inilah Cara Dapat Saldo Cool Lady Tanpa Undang Teman, Ternyata Begini Trik Rahasianya!
  • Inilah Cara Main Watermelon Merge Fun Biar Dapat Saldo DANA, Apakah Benaran Membayar?
  • Inilah Kenapa Stok Penarikan Free Reels Sering Habis dan Cara Mengatasinya Agar Saldo Cair!
  • Inilah Alasan Kenapa Telat Lapor SPT 2026 Nggak Bakal Kena Denda, Cek Aturan Lengkapnya!
  • Inilah Cara Mematikan Koreksi Otomatis di WhatsApp Agar Nggak Salah Ketik Lagi
  • Apa itu Bujang Inam? Inilah Alasan Kenapa Kata Ini Jadi Makian Paling Kasar dalam Budaya Medan dan Batak!
  • Inilah Kenapa Link FF Kipas My ID Verify UID Beta Testing Sering Gagal dan Cara Menghadapinya
  • Gini Caranya Mulai Dropshipping Pake AI di Tahun 2026, Auto Cuan Tanpa Ribet!
  • Baterai Smartwatch Boros? Inilah Caranya Biar Baterai Smartwatch Kalian Bisa Awet Berhari-hari!
  • Belum Tahu? Inilah Fakta Cahaya Misterius di Lampung yang Ternyata Sampah Roket China CZ-3B!
  • Inilah Roblox Mod APK 2026, Fitur Premium Jadi Gratis dan Cara Pasangnya yang Perlu Kalian Tahu!
  • Inilah Panduan Lengkap UTUL UGM 2026, Cari Tahu Jadwal, Biaya Pendaftaran, Sampai Info Uang Pangkal IPI di Sini!
  • Inilah IGRS di Roblox dan Steam, Ternyata Ini Alasan Komdigi Kasih Aturan Ketat!
  • Inilah Makna Mendalam Regina Caeli: Kenapa Umat Katolik Wajib Doa Ratu Surga Selama Masa Paskah?
  • Inilah Kronologi Lengkap Kecelakaan Truk TNI di Kalideres: Simak Fakta dan Status Sopirnya Sekarang!
  • Inilah Rahasia Ambil Ide Youtube Lain, Tapi Konten Kalian Nggak Terlihat Membosankan
  • Is it Time to Replace Nano? Discover Fresh, the Terminal Text Editor You Actually Want to Use
  • How to Design a Services Like Google Ads
  • How to Fix 0x800ccc0b Outlook Error: Step-by-Step Guide for Beginners
  • How to Fix NVIDIA App Error on Windows 11: Simple Guide
  • How to Fix Excel Formula Errors: Quick Fixes for #NAME
  • How to Use Orbax Checkpointing with Keras and JAX for Robust Training
  • How to Automate Any PDF Form Using the Power of Manus AI
  • How to Training Your Own YOLO26 Object Detection Model!
  • How to Build a Full-Stack Mobile App in Minutes with YouWare AI
  • How to Create Consistent Characters and Cinematic AI Video Production with Seedance
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025

©2026 emka.web.id | Design: Newspaperly WordPress Theme