Cara Membuat Speed Test dengan PHP dan Mengatasi Hasil yang Tidak Akurat
Panduan cara membuat speed test dengan PHP untuk mengukur download, upload, dan latensi. Pelajari penyebab hasil meleset, cara memeriksa bottleneck, serta langkah optimasi server, router, Wi-Fi, dan koneksi ISP.
Membuat speed test dengan PHP dapat membantu pemilik website menguji respons server dan memperkirakan kualitas koneksi pengguna. Namun, hasil pengukuran sering berbeda dari aplikasi speed test resmi atau paket internet yang ditawarkan ISP/operator. Perbedaan ini wajar karena PHP terutama berjalan di server, sedangkan hasil download, upload, dan latensi dipengaruhi banyak titik antara perangkat pengguna hingga server.
Untuk pengujian yang berguna, PHP sebaiknya digunakan sebagai endpoint untuk mengirim data unduhan, menerima data unggahan, dan mencatat waktu permintaan. Browser di sisi pengguna menghitung durasi transfer, sementara PHP mencatat ukuran data dan waktu proses di server. Hindari menganggap satu kali tes sebagai angka mutlak; lakukan beberapa putaran dan gunakan nilai median.
Gejala speed test PHP yang perlu diperiksa
Gejala umum adalah download terlihat rendah, upload berhenti di tengah proses, latensi berubah jauh antarpercobaan, atau hasil pengguna Wi-Fi lebih buruk daripada perangkat yang memakai kabel LAN. Ada juga kondisi ketika speed test cepat di jaringan lokal tetapi lambat bagi pengguna internet umum.
Bedakan lebih dahulu antara masalah aplikasi PHP, kapasitas hosting, jalur jaringan, dan jaringan rumah pengguna. Pengujian dari perangkat yang sama, pada waktu berbeda, serta ke server berbeda akan mempersempit sumber masalah.
Cara kerja dasar speed test dengan PHP
Endpoint download PHP perlu mengirim berkas atau data biner dengan ukuran yang sudah diketahui. Browser mengunduh data tersebut sambil menghitung waktu mulai dan selesai, kemudian membagi total byte dengan durasi. Gunakan data yang cukup besar agar waktu koneksi awal tidak terlalu mendominasi hasil, tetapi jangan terlalu besar hingga membebani server.
Endpoint upload menerima data dari browser dan mencatat jumlah byte yang benar-benar diterima. Untuk pengukuran latensi, browser dapat mengirim permintaan kecil berulang kali ke endpoint PHP. Nilai yang terlihat pengguna biasanya adalah waktu pulang-pergi permintaan, sehingga mencakup browser, Wi-Fi atau kabel, router, ISP/operator, internet, web server, dan proses PHP.
Penyebab 1: Kapasitas server PHP menjadi bottleneck
Server yang menjalankan PHP dengan CPU, RAM, atau jumlah worker terbatas dapat memperlambat transfer. Pada shared hosting, proses pengguna lain juga dapat memakai sumber daya yang sama. Akibatnya, hasil tes lebih mencerminkan kapasitas hosting daripada kecepatan fiber atau paket internet pengguna.
Periksa penggunaan CPU, memori, beban proses PHP-FPM atau web server, serta waktu respons saat tes berlangsung. Jika hasil turun ketika banyak pengguna menjalankan tes bersamaan, kemungkinan terbesar adalah antrean worker atau batas bandwidth server. Gunakan server dengan kapasitas jaringan memadai, aktifkan pemantauan resource, dan batasi jumlah tes paralel per alamat IP.
Penyebab 2: Data download terlalu kecil atau tersimpan di cache
Berkas download yang terlalu kecil membuat hasil sangat dipengaruhi DNS, koneksi TCP, TLS, dan waktu respons awal. Jika browser, CDN, proxy, atau server menyimpan respons di cache, pengujian berikutnya bisa tampak jauh lebih cepat tanpa benar-benar mengukur jalur transfer dari PHP.
Uji dengan beberapa ukuran data dan pastikan respons download tidak menggunakan cache untuk endpoint pengujian. Tambahkan parameter unik pada permintaan bila diperlukan, lalu bandingkan hasil tes pertama dan tes berikutnya. Jika hanya tes pertama yang lambat atau hanya tes berikutnya yang sangat cepat, cache perlu diperiksa.
Penyebab 3: Batas bandwidth hosting atau jalur server
Server dapat memiliki port jaringan cepat, tetapi bandwidth aktualnya dibatasi oleh paket hosting, kebijakan data center, CDN, firewall, atau trafik aplikasi lain. Lokasi data center juga berpengaruh. Pengguna di Indonesia dapat memperoleh hasil berbeda ketika endpoint berada di Jakarta, Singapura, atau wilayah yang lebih jauh.
Bandingkan endpoint PHP dengan server lain yang lokasinya berbeda dan lakukan tes pada jam sibuk maupun jam sepi. Jika semua perangkat menunjukkan batas angka yang hampir sama ke satu server, tetapi normal ke server lain, masalah kemungkinan berada pada kapasitas atau rute server. Pilih lokasi server yang dekat dengan mayoritas pengguna dan sediakan beberapa lokasi tes bila audiens tersebar.
Penyebab 4: Wi-Fi, router, dan perangkat pengguna
Wi-Fi sering menjadi penyebab hasil download dan upload tidak stabil. Jarak ke router, dinding, gangguan kanal, penggunaan frekuensi 2,4 GHz, serta perangkat lama dapat menurunkan throughput. Router yang sibuk menangani banyak perangkat juga dapat menambah latensi dan membuat grafik transfer naik turun.
Mintalah pengguna membandingkan hasil melalui kabel LAN dan Wi-Fi pada perangkat yang sama. Jika kabel LAN konsisten lebih cepat, endpoint PHP bukan penyebab utama. Dekatkan perangkat ke router, gunakan 5 GHz atau 6 GHz bila tersedia, pilih kanal yang lebih sepi, perbarui firmware router, dan hentikan aktivitas download lain selama tes.
Penyebab 5: Trafik lain memakai koneksi internet
Backup cloud, streaming video, pembaruan sistem, unduhan game, kamera keamanan, dan perangkat lain di rumah dapat memakai kapasitas download atau upload. Upload yang penuh sering meningkatkan latensi secara drastis, sehingga halaman web, panggilan video, dan game terasa lambat walaupun angka download masih terlihat cukup tinggi.
Periksa daftar perangkat aktif pada router dan ulangi tes ketika aktivitas lain dihentikan. Lakukan satu tes dengan jaringan rumah kosong, lalu tes kedua saat ada streaming atau upload besar. Jika latensi melonjak pada tes kedua, aktifkan fitur QoS atau SQM pada router untuk membagi trafik secara lebih adil.
Penyebab 6: Pengukuran waktu di browser dan PHP tidak selaras
Jika aplikasi hanya menghitung waktu dari sisi PHP, hasilnya tidak mencakup seluruh perjalanan data ke perangkat pengguna. Sebaliknya, jika browser menghitung waktu tanpa membedakan waktu tunggu server dan transfer, angka dapat tercampur dengan proses aplikasi. Redirect, kompresi respons, dan buffering web server juga dapat mengubah hasil.
Catat metrik terpisah untuk latensi permintaan kecil, waktu mulai download, ukuran data, durasi download, ukuran upload, dan durasi upload. Gunakan satuan yang jelas, misalnya Mbps untuk throughput dan ms untuk latensi. Validasi hasil dengan alat browser dan bandingkan dengan layanan speed test lain hanya sebagai referensi, bukan sebagai angka yang harus identik.
Langkah optimasi speed test PHP
- Gunakan endpoint terpisah untuk ping, download, dan upload agar tiap metrik mudah dianalisis.
- Pilih ukuran data bertahap agar koneksi lambat tidak langsung terbebani, tetapi koneksi fiber tetap memiliki waktu transfer yang cukup untuk diukur.
- Nonaktifkan cache pada endpoint tes dan pastikan data yang diukur benar-benar ditransfer.
- Batasi penyalahgunaan dengan rate limit, batas ukuran upload, serta pembersihan data sementara.
- Ukur beberapa kali dan tampilkan median, bukan hanya hasil tertinggi.
- Sediakan informasi lingkungan tes seperti lokasi server, waktu tes, jenis koneksi Wi-Fi atau LAN, dan ukuran data yang dipakai.
Kesimpulan
Cara membuat speed test dengan PHP yang baik bukan hanya mengirim dan menerima data, melainkan juga memisahkan faktor server, jalur internet, router, Wi-Fi, dan perangkat pengguna. Jika hasil terlihat rendah, mulai dari membandingkan kabel LAN dengan Wi-Fi, memeriksa trafik lain, lalu menguji endpoint di server atau lokasi berbeda. Dengan metrik yang dipisahkan dan pengujian berulang, hasil speed test akan lebih mudah dijelaskan serta lebih berguna untuk pengguna internet rumah.
