Cara menggunakan PHP dan Elasticsearch untuk memantau perangkak web dalam masa nyata
Pengenalan:
Perangkak web boleh membantu kami memperoleh sejumlah besar data daripada Internet. Walau bagaimanapun, apabila program perangkak berjalan untuk masa yang lama, kita selalunya perlu memantau status berjalannya dan hasilnya dalam masa nyata. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk melaksanakan pemantauan masa nyata perangkak web, supaya kita boleh memahami situasi merangkak tepat pada masanya.
Pasang dependencies
Kami menggunakan Composer untuk memasang pustaka klien PHP Elasticsearch, jalankan arahan berikut:
composer require elasticsearch/elasticsearch
Buat sambungan Elasticsearch
Buat sambungan Elasticsearch menggunakan kod berikut:
require 'vendor/autoload.php'; use ElasticsearchClientBuilder; $client = ClientBuilder::create() ->setHosts(['localhost:9200']) ->build();
sediakan Elasticsearch Hos dan port boleh diubah suai mengikut situasi sebenar anda.
Buat indeks pemantauan perangkak
Dalam Elasticsearch, kita perlu terlebih dahulu mencipta indeks untuk menyimpan data pemantauan perangkak. Jalankan kod berikut untuk mencipta indeks:
$params = [ 'index' => 'spider_monitor', 'body' => [ 'mappings' => [ 'properties' => [ 'url' => ['type' => 'text'], 'status' => ['type' => 'keyword'], 'timestamp' => ['type' => 'date'] ] ] ] ]; $response = $client->indices()->create($params);
Pantau status perangkak
Dalam program perangkak, kita boleh memantau statusnya dalam masa nyata dengan memasukkan data ke dalam Elasticsearch. Berikut ialah contoh kod:
$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);
Dalam kod di atas, kami memasukkan URL perangkak, status berjalan dan cap masa semasa sebagai dokumen ke dalam indeks.
Soal status perangkak
Dengan menggunakan fungsi carian Elasticsearch, kami boleh menanyakan status perangkak dalam julat masa tertentu. Berikut ialah contoh kod:
$params = [ 'index' => 'spider_monitor', 'body' => [ 'query' => [ 'range' => [ 'timestamp' => [ 'gte' => '2022-01-01T00:00:00', 'lt' => '2022-12-31T23:59:59' ] ] ] ] ]; $response = $client->search($params);
Dalam kod di atas, kami menentukan julat masa dan mendapatkan semua status perangkak dalam julat itu.
Ringkasan:
Artikel ini memperkenalkan cara menggunakan PHP dan Elasticsearch untuk memantau perangkak web dalam masa nyata. Dengan menyimpan data status perangkak dalam Elasticsearch, kami boleh membuat pertanyaan dan memvisualisasikan hasil rangkak dengan cepat dan memahami status operasi perangkak tepat pada masanya. Saya berharap kandungan ini dapat memberikan sedikit rujukan dan bantuan untuk pembangun dalam proses pemantauan crawler.
Atas ialah kandungan terperinci Bagaimana untuk memantau perangkak web dalam masa nyata menggunakan PHP dan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!