Какой самый быстрый способ проверить, работает ли веб-сайт на Perl или C? - PullRequest
2 голосов
/ 24 июня 2009

Я пытаюсь проверить, работает ли веб-сайт. В настоящее время я делаю это с библиотекой UserAgent в Perl с тайм-аутом 1. Однако это все еще слишком медленно для меня.

Я вызываю сценарий каждые пять минут из cron. Есть много ссылок для проверки, и выполнение скрипта занимает более пяти минут. Итак, мне нужен более эффективный способ сделать это. Это может быть даже решение в C.

Ответы [ 7 ]

9 голосов
/ 24 июня 2009

Следующие способы ускорить его:

  1. Просто проверьте, можем ли мы установить сокет на 80 порт целевого сервера, не отправлять запрос Get http или просто отправить запрос HEAD.
  2. Используйте многопоточность, чтобы сделать это быстрее.
8 голосов
/ 24 июня 2009

Это, скорее всего, медленно, потому что вы делаете это последовательно.

Попробуйте использовать LWP :: Parallel :: UserAgent - он будет выполнять много запросов одновременно.

4 голосов
/ 24 июня 2009

Как насчет использования httping ?

4 голосов
/ 24 июня 2009

Если ссылок много, я предлагаю вам сделать программу многопоточную или fork () это несколько раз. Таким образом, вы можете ожидать улучшения скорости.

4 голосов
/ 24 июня 2009

завиток -I http://hostname

Первая строка будет содержать 503 или 404, если служба недоступна или страница не найдена.

время дает это для curl -I http://www.google.com

real    0m0.125s
user    0m0.004s
sys     0m0.004s

и это для завитка -I http://www.google.cmo

real    0m0.120s
user    0m0.004s
sys  0m0.004s
3 голосов
/ 24 июня 2009

Извлечение ресурсов из сети обычно требует небольшой задержки.

Как предложил Алан Хаггай Алави, вы, вероятно, захотите разделить работу на несколько параллельных потоков / процессов. В документации по модулю Parallel::ForkManager есть даже пример, на котором вы сможете опираться.

0 голосов
/ 25 июня 2009

Я не знаю ни C (BLASPHEMY!), Ни Perl, но, как я вижу, я бы попробовал следующее:

  • Один поток для записи файла. У этого потока будет очередь, в которую он может записать свои команды.
  • Одна тема на сайт, который вы хотите проверить. Поток будет использовать любой метод, который вам подходит для большинства других ответов, а затем сообщать основному потоку о событии, которое он может вызвать.

2cts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...