PHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法
はじめに:
Web クローラー プログラムは、インターネットから大量のデータを取得するのに役立ちます。しかし、クローラープログラムを長時間実行すると、その実行状況や結果をリアルタイムに監視する必要が生じることが多くなります。この記事では、PHP と Elasticsearch を使用して Web クローラーのリアルタイム監視を実装し、クロールの状況を適時に把握する方法を紹介します。
インストールの依存関係
Composer を使用して PHP Elasticsearch クライアント ライブラリをインストールし、次のコマンドを実行します:
composer require elasticsearch/elasticsearch
Elasticsearch 接続の作成
次のコードを使用して、Elasticsearch 接続を作成します。
require 'vendor/autoload.php'; use ElasticsearchClientBuilder; $client = ClientBuilder::create() ->setHosts(['localhost:9200']) ->build();
上記のコードでは、Elasticsearch のホストとポートを設定し、実際の状況に応じて変更します。
クローラ監視インデックスの作成
Elasticsearch では、まずクローラ監視データを保存するためのインデックスを作成する必要があります。次のコードを実行してインデックスを作成します。
$params = [ 'index' => 'spider_monitor', 'body' => [ 'mappings' => [ 'properties' => [ 'url' => ['type' => 'text'], 'status' => ['type' => 'keyword'], 'timestamp' => ['type' => 'date'] ] ] ] ]; $response = $client->indices()->create($params);
クローラー ステータスの監視
クローラー プログラムでは、Elasticsearch にデータを挿入することで、そのステータスをリアルタイムで監視できます。以下はサンプル コードです:
$url = "http://example.com"; $status = "running"; $timestamp = date('Y-m-d H:i:s'); $params = [ 'index' => 'spider_monitor', 'body' => [ 'url' => $url, 'status' => $status, 'timestamp' => $timestamp ] ]; $response = $client->index($params);
上記のコードでは、クローラーの URL、実行ステータス、および現在のタイムスタンプをドキュメントとしてインデックスに挿入します。
クローラーのステータスをクエリする
Elasticsearch の検索機能を使用すると、特定の時間範囲内のクローラーのステータスをクエリできます。以下はサンプル コードです。
$params = [ 'index' => 'spider_monitor', 'body' => [ 'query' => [ 'range' => [ 'timestamp' => [ 'gte' => '2022-01-01T00:00:00', 'lt' => '2022-12-31T23:59:59' ] ] ] ] ]; $response = $client->search($params);
上記のコードでは、時間範囲を指定し、その範囲内のすべてのクローラーのステータスを取得します。
概要:
この記事では、PHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法を紹介します。クローラーのステータスデータをElasticsearchに保存することで、クローリング結果を迅速にクエリして可視化し、クローラーの稼働状況をタイムリーに把握できます。このコンテンツが、クローラーを監視する開発者にとって参考になり、役立つことを願っています。
以上がPHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。