WordPress Puls? – Heartbeat API

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 10 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

Mit WordPress 3.6 wird es eine neue API geben – Heartbeat. Am Ticket 23216 im Trac sammeln sich alle Diskussionen und Hinweise. Da Heartbeat aber auch Einflüsse für Anwender haben kann, hier einige Worte und Hinweise. Heartbeat wird eingeführt um diverse Aktivitäten, wie Autosave, Sperren von Artikeln und An- und Abmelde-Benachrichtigungen zu händeln. Parallel kann die API auch für eigene Entwicklungen genutzt werden.

Am Puls

Im Standard wird Heartbeat mit einem Puls von 15 Sekunden schlagen – Arbeit die der Prozessor tun muss und so kann es sinnvoll sein, diesen Wert zu ändern. Dabei kann nicht beliebig geändert werden. Der Pulsschlag von Heartbeat muss zwischen 5 und 60 Sekunden liegen. Folgendes kleines Plugin ändert auf den maximalen Wert von 60s.

Die Heartbeat API hat vielleicht im ersten Blick nicht die großen Vorteile, schauen wir aber auf ein einfaches Beispiel. Deine Installation hat zehn verschieden Plugins, die einen Poll auf den Server brauchen. Dann finden diese Hits getrennt statt, 10 mal. Wenn die Plugins die Heartbeat API verwenden, dann werden die Polls gebündelt, ein Hit für 10 Polls, alle 15 Sekunden im Standard.


<?php
/**
 * Plugin Name: Set Heartbeat pulse
 */

! defined( 'ABSPATH' ) and exit;

add_filter( 'heartbeat_settings', 'fb_heartbeat_settings' );
function fb_heartbeat_settings( $settings = array() ) {

	$settings['interval'] = 60;

	return $settings;
}

Parallel kann man Heartbeat auch still legen, den Puls abklemmen, was das folgenden kleine Plugin tut.


<?php
/**
 * Plugin Name: Remove Heartbeat pulse
 */

! defined( 'ABSPATH' ) and exit;

remove_action( 'admin_init', 'wp_auth_check_load' );

Debugging

Im Core von WordPress wurde die API so implementiert, dass die Console Infos ausspucken kann. Dazu muss der Parameter wp.heartbeat.debug auf TRUE gesetzt werden und schon kann das JavaScript infos geben.


if ( typeof console !== 'undefined' ) {
	// Show debug info
	wp.heartbeat.debug = true;
}

Entwicklung

Ein einfaches Beispiel liegt dem Trac bei, wo das Dashboard Widget für Kommentare am Pulsschlag aktualsiet wird – man kann also alle 15s einen Refresh der Zahlen erleben, insofern neue Kommentare eintreffen. Das Beispiel zeigt die wichtigsten Hooks und Funktionen und daher hier auch keine weitere Erklärung.

Weitere Hinweise, Links zum Thema

Von Frank Bültge

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.