ホームページ  >  記事  >  バックエンド開発  >  PHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法

PHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法

WBOY
WBOYオリジナル
2023-07-07 20:30:261066ブラウズ

PHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法

はじめに:
Web クローラー プログラムは、インターネットから大量のデータを取得するのに役立ちます。しかし、クローラープログラムを長時間実行すると、その実行状況や結果をリアルタイムに監視する必要が生じることが多くなります。この記事では、PHP と Elasticsearch を使用して Web クローラーのリアルタイム監視を実装し、クロールの状況を適時に把握する方法を紹介します。

  1. 準備
    始める前に、次のツールをインストールして構成する必要があります。
  2. PHP: この例では、開発言語として PHP を使用します。
  3. Elasticsearch: クローラー監視データの保存と検索に使用されます。
  4. Composer: PHP の依存関係を管理するために使用されます。
  5. インストールの依存関係
    Composer を使用して PHP Elasticsearch クライアント ライブラリをインストールし、次のコマンドを実行します:

    composer require elasticsearch/elasticsearch
  6. Elasticsearch 接続の作成
    次のコードを使用して、Elasticsearch 接続を作成します。

    require 'vendor/autoload.php';
    
    use ElasticsearchClientBuilder;
    
    $client = ClientBuilder::create()
     ->setHosts(['localhost:9200'])
     ->build();

    上記のコードでは、Elasticsearch のホストとポートを設定し、実際の状況に応じて変更します。

  7. クローラ監視インデックスの作成
    Elasticsearch では、まずクローラ監視データを保存するためのインデックスを作成する必要があります。次のコードを実行してインデックスを作成します。

    $params = [
     'index' => 'spider_monitor',
     'body' => [
         'mappings' => [
             'properties' => [
                 'url' => ['type' => 'text'],
                 'status' => ['type' => 'keyword'],
                 'timestamp' => ['type' => 'date']
             ]
         ]
     ]
    ];
    
    $response = $client->indices()->create($params);
  8. クローラー ステータスの監視
    クローラー プログラムでは、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、実行ステータス、および現在のタイムスタンプをドキュメントとしてインデックスに挿入します。

  9. クローラーのステータスをクエリする
    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);

    上記のコードでは、時間範囲を指定し、その範囲内のすべてのクローラーのステータスを取得します。

  10. 視覚的なモニタリング結果
    モニタリング結果をより直観的に表示するために、サードパーティ ツール (Kibana など) を使用して Elasticsearch のデータを視覚化できます。 Kibana を通じて、ダッシュボードやチャートなどを作成し、クローラーのステータスをリアルタイムで監視できます。

概要:
この記事では、PHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法を紹介します。クローラーのステータスデータをElasticsearchに保存することで、クローリング結果を迅速にクエリして可視化し、クローラーの稼働状況をタイムリーに把握できます。このコンテンツが、クローラーを監視する開発者にとって参考になり、役立つことを願っています。

以上がPHP と Elasticsearch を使用して Web クローラーをリアルタイムで監視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。