WordPress Heartbeat API menggunakan admin-ajax.php untuk menjalankan panggilan AJAX. Jika Pengguna X membiarkan browser mereka terbuka, banyak panggilan akan dilakukan ke server, dengan setiap panggilan terjadi ketika ada 'ketukan'. Sekarang jika Pengguna Y membiarkan browser mereka terbuka, lebih banyak panggilan akan dilakukan ke server, dengan masing-masing panggilan ini terjadi ketika ada 'ketukan'. Mungkin situs web besar juga akan memiliki Pengguna A, Pengguna B dan Pengguna C semua melakukan hal yang sama.
Pertanyaan saya:
Mengingat banyak pengguna dapat mengakses situs web secara bersamaan, apakah WordPress Heartbeat API 'beats' ('beat' untuk Pengguna X terjadi beberapa detik sebelum 'beat' untuk Pengguna Y) atau apakah 'beat' terjadi persis sama waktu untuk semua pengguna?
Jika 'beat' tidak terhuyung-huyung, kekhawatiran saya adalah beban yang sangat berat di server pada saat 'beat' terjadi.
sumber
Jawaban:
Saya akan berpikir bahwa ketukan itu terhuyung - huyung oleh alam, karena centang selanjutnya ditentukan oleh waktu browser
time()
dalamscheduleNextTick()
metode dalam/wp-includes/js/heartbeat.js
file:di mana ia digunakan untuk menjadwalkan centang berikutnya dengan
setTimeout
fungsi:Waktu browser didefinisikan sebagai:
The
connect()
metode berisi panggilan ajax dan penggunaanalways()
untuk menjadwalkan centang berikutnya.
Interval centang yang tersedia adalah 5s, 15s, 30s, dan 60s.
Untuk sejumlah besar pengguna yang sangat aktif, dengan interval centang pendek, ketukan mungkin tampak terjadi secara bersamaan.
Itu selalu baik untuk memiliki beberapa data, sehingga Anda bisa mencatat kutu dari pengguna yang masuk, dengan
heartbeat_tick
kait:Berikut ini contoh dari
ticks.log
file tersebut:sumber