La API Heartbeat de WordPress usa admin-ajax.php para ejecutar llamadas AJAX. Si el usuario X deja abierto su navegador, se realizarán muchas llamadas al servidor, y cada llamada se realizará cuando haya un "latido". Ahora, si el usuario Y deja abierto su navegador, se realizarán muchas más llamadas al servidor, y cada una de estas llamadas sucederá cuando haya un 'latido'. Es posible que un sitio web grande también haga que el Usuario A, el Usuario B y el Usuario C hagan lo mismo.
Mi pregunta:
Teniendo en cuenta que muchos usuarios pueden acceder a un sitio web simultáneamente, ¿los 'latidos' de WordPress Heartbeat API son escalonados (el 'latido' para el usuario X ocurre unos segundos antes del 'latido' para el usuario Y) o se produce un 'latido' exactamente igual? tiempo para todos los usuarios?
Si los 'latidos' no se escalonan, mi preocupación es una carga muy pesada en el servidor en el momento en que ocurre un 'latido'.
fuente
Respuestas:
Creo que los ritmos son escalonados por naturaleza, porque el siguiente tic está determinado por el tiempo del navegador
time()
dentro delscheduleNextTick()
método en el/wp-includes/js/heartbeat.js
archivo:donde se usa para programar el próximo tic con la
setTimeout
función:El tiempo del navegador se define como:
El
connect()
método contiene la llamada ajax y utilizaalways()
para programar el próximo tic.
Los intervalos de tick disponibles son 5s, 15s, 30s y 60s.
Para un gran número de usuarios muy activos, con un breve intervalo de tics, los ritmos pueden parecer simultáneos.
Siempre es bueno tener algunos datos, por lo que puede registrar los ticks de los usuarios conectados, con el
heartbeat_tick
enlace:Aquí hay un ejemplo del
ticks.log
archivo:fuente