WordPressのHeartbeat APIは、ウェブサイトの脈拍のように機能します。ブラウザからサーバーへ、数秒ごとに「生きている」という小さな通知を送信します。この自動リクエスト/レスポンスサイクルにより、サイトのデータ、投稿、ダッシュボードが同期され、リアルタイムの更新と、エディター、プラグイン、管理者にとって重要な機能が提供されます。.
この用語集の記事では、WordPress Heartbeat API がどのように機能するか、なぜそれが重要なのか、ホスティングで高い CPU 需要が生じる場合にそれを監視、制御、または無効にする方法について詳しく説明します。.
WordPress Heartbeat API が重要な理由
Heartbeat APIは、ブラウザとサーバー間の継続的な通信を維持することで、WordPressのユーザーフレンドリーな機能の多くを支えています。Heartbeat APIがなければ、便利な自動保存、投稿の共同ロック、ダッシュボードのリアルタイム更新といった機能が利用できなくなります。.
- 投稿エディターを安全に保ちます: WordPress エディターで投稿を下書きまたは編集しているとき、Heartbeat は 15 ~ 60 秒ごとに変更を自動保存するため、ブラウザーまたは接続が切断されても作業が失われることはありません。
- ユーザーのロックと通知: 2 人の投稿者が同時に同じ投稿を編集しようとすると、Heartbeat は通知 (「チーム メンバーがこの投稿を編集しています」) を送信し、コンテンツの競合を防ぐためのロック メカニズムを適用します。
- リアルタイム ダッシュボード ウィジェット: WooCommerceなどの電子商取引プラグインは、 API を使用して、ページ全体をリロードせずにダッシュボードの販売データを更新します。
- セッション タイムアウト アラート:ログイン セッションの有効期限が切れると、Heartbeat から警告が出され、保存されていない編集内容が失われる前に再度ログインするように求められます。
Heartbeat API の仕組み: 基本
Heartbeatはサーバーへの小さなAJAX呼び出しを介して動作し、WordPressはページ全体を更新することなくデータを調整できます。これらの頻繁なpingにより、エディターが最新の情報を確認し、セッションが有効な状態を維持することで、セキュリティ
- ブラウザ送信 管理者-ajax.php リクエスト: Heartbeatのたびにブラウザは小さなAJAX呼び出しを送信します。 /wp-admin/admin-ajax.php.
- サーバー プロセス リクエスト: WordPress はフックされた関数を実行し、新しいデータを取得して、それを JSON 応答として送り返します。
- ブラウザの受信と動作:ブラウザの JavaScript イベントが応答をキャッチし、UI を更新し (自動保存、ウィジェットの更新など)、次の間隔の準備をします。
js
// 例: フロントエンドで次のハートビート ティックをリッスンします
。jQuery(document).on('heartbeat-tick', function(event, data) {
console.log('Heartbeat response received:', data);
});
- デフォルトの間隔: エディター画面 (15 秒)、ダッシュボードとその他の管理ページ (60 秒)。
コアフックとコード例
開発者はHeartbeatの組み込みフックを活用して、カスタム機能を追加したり、動作を調整したりできます。これらのJavaScriptおよびPHPイベントを利用することで、必要なデータを交換するためのAPIをカスタマイズできます。.
JavaScriptフック
以下は、フロントエンド制御に結び付けることができる 2 つの主要な JS フックです。
- ハートビート送信: 各リクエストの前にカスタム データを添付します。.
- 心臓の鼓動: リクエストが完了したら、受信したデータに基づいて操作します。.
js
// すべてのハートビート送信イベントに追加情報を添付します
jQuery(document).on('heartbeat-send', function(e, data) {
data.customValue = jQuery('#my-field').val();
});
PHPフック
サーバー側では、これらのフックを使用して、Heartbeat 呼び出しを変更したり、Heartbeat 呼び出しに反応したりできます。
- ハートビート送信: サーバーから返されるデータを変更します。.
- ハートビート受信: サーバーがティックを受け取ったときにアクションを実行します。.
php
add_filter('heartbeat_send', 'my_heartbeat_send', 10, 2);
function my_heartbeat_send($response, $screen_id) {
if ($screen_id === 'post') {
$response['server_time'] = time();
}
return $response;
}
WordPress Heartbeat APIの一般的な使用例
Heartbeatのリアルタイム機能は、WordPressの多くの日常的な機能を支えています。サーバーとブラウザを同期することで、手動でクリックしたり、完全にリロードしたりすることなく、ダッシュボードとエディターを最新の状態に保つことができます。.
- 自動保存と修正: Heartbeat は投稿エディターでシームレスに実行され、15 秒ごとにバックアップを作成するので、失われたコンテンツを回復できます。
- リアルタイムの販売データ:電子商取引プラグイン開発者は、Heartbeat を使用して最新の販売統計を取得し、即座に表示します。
- セッション有効期限の通知:ログイン セッションの有効期限が近づくと、Heartbeat に「ログイン状態を維持するにはここをクリックしてください」という通知が表示されます。
- コラボレーションアラート:複数の投稿者がいるサイトで誰がどの投稿を編集しているかがわかるので、上書きの競合を防ぐことができます。
パフォーマンスの考慮事項と高いCPU使用率
Heartbeatはリアルタイム更新には不可欠ですが、アクセスの多いサイトではCPUを大量に消費する可能性があります。admin-ajax.phpへの頻繁なAJAXリクエストは処理時間とメモリを消費するため、共有ホスティングアカウントのリソース制限を超えてしまう可能性があります。.
- CPU 負荷の上昇: AJAXを処理する必要があるため、サーバーの CPU 使用率が大幅に増加する可能性があります。
- ページ応答が遅くなる:サーバーがこれらのリクエストをより多く処理するにつれて、フロントエンドのページの読み込みと管理ダッシュボードのやり取りが著しく遅くなる可能性があります。
- 停止のリスク: の量が 管理者-ajax.php リクエストによってサイトがホストの CPU 制限を超えると、使用量が許容レベルに戻るまでアカウントが制限または停止される可能性があります。.
ハートビート トラフィックを監視するにはどうすればよいでしょうか?
ハートビートアクティビティを観察することで、パフォーマンスのボトルネックを早期に診断できます。サーバーログとクライアント側ツールを使用して、リクエストの頻度と応答時間を追跡してください。.
- サーバーログと統計: cPanelまたはホスティングダッシュボードでCPU使用率の急上昇をチェックし、 /wp-admin/admin-ajax.php エントリ。.
- ブラウザ開発ツール: Chrome または Firefox の開発者ツール → ネットワーク タブ → 「admin-ajax.php」をフィルター → ティック頻度と応答時間を観察します。
- プラグイン ソリューション:パフォーマンス プラグイン (Query Monitor など) をインストールして、管理ダッシュボードで直接、Heartbeat 呼び出し、メモリ使用量、実行時間を確認します。
Heartbeat APIの制御と制限
Heartbeatのデフォルトのリズムがサーバーに過負荷をかけている場合は、Heartbeatを部分的に減速または無効化することができます。これにより、リアルタイム機能と最適なパフォーマンスおよびリソース制御のバランスをとることができます。.
- プラグイン経由: Heartbeat Control をインストールするか、 WP Rocketの組み込み設定を使用して間隔を調整したり、特定の画面で Heartbeat をオフにしたりします。
- コード経由
php
// ハートビートの頻度を 60 秒ごとに 1 回に減らします
。add_filter('heartbeat_settings', function($settings) {
$settings['interval'] = 60;
return $settings;
});
// フロントエンドで完全に無効にします。add_action
('init', function() {
if (!is_admin()) wp_deregister_script('heartbeat');
}, 1);
Heartbeat API を無効にするリスク
Heartbeatを無効にするとCPU負荷は軽減されますが、いくつかの重要な機能が利用できなくなります。サイト全体で無効にする前に、ユーザーエクスペリエンスとセキュリティのトレードオフを理解してください。.
- クラシック エディターには自動保存機能がありません → 変更ごとに手動で「下書きを保存」をクリックする必要があります。.
- 公開/更新中にインターネット接続が切断された場合、データが失われる可能性があります。.
- Heartbeat に依存するダッシュボード ウィジェットとプラグインは動作を停止し、リアルタイム レポートと機能が減少します。.
ベストプラクティスとトラブルシューティング
Heartbeatを完全に停止するのではなく、その動作を微調整する方が賢明です。Heartbeatを選択的にスロットリングしたりログに記録したりすることで、サーバーの健全性を維持しながらHeartbeatの利点を維持できます。.
- スロットル、キルしない: 完全に無効にする代わりに、間隔を 15 秒から 30 秒または 60 秒に増やします。
- ステージングでのテスト: まず、ステージング環境で間隔の変更または登録解除を適用して、問題を検出します。
- キャッシュと組み合わせる: オブジェクトまたはページのキャッシュを活用して、Heartbeat からの余分なサーバー負荷を相殺します。
- ログを有効にする: フックイン ハートビート受信 ティックを記録し、予期しない動作をデバッグします。.
最終的な考え
WordPress Heartbeat API は、サイトの動作と同期を維持します。下書きの自動保存、リアルタイムデータの表示、編集の競合防止に役立ちます。リクエストが多すぎるとCPU使用率が上昇する可能性があります。必要に応じて速度を落としたり、無効化したりできます。まずはステージングサイトで変更をテストしてください。適切なバランスを保つことで、Heartbeat はパフォーマンスを損なうことなく機能性を向上させます。.
WordPress の用語と詳しい説明については、 Seahawk Media 用語集。