Написание поискового робота на PHP с использованием cron - PullRequest
0 голосов
/ 11 января 2011

Я написал веб-сканер, использующий simplehtmldom, и получил процесс сканирования довольно хорошо.Он сканирует стартовую страницу, добавляет все ссылки в таблицу базы данных, устанавливает указатель сеанса и мета обновляет страницу для переноса на следующую страницу.Это продолжается до тех пор, пока не закончатся ссылки

Это прекрасно работает, однако, очевидно, что время сканирования для крупных сайтов довольно утомительно.Хотя я хотел немного ускорить процесс и, возможно, сделать его работой cron.

Есть идеи как сделать его максимально быстрым и эффективным, кроме как установить ограничение памяти / время выполнения выше?

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Похоже, вы запускаете свой скрипт в веб-браузере.Вы можете запустить его из командной строки.Вы можете выполнять несколько сценариев для одновременного сканирования на разных страницах.Это должно ускорить процесс.

1 голос
/ 11 января 2011

Память не должна быть проблемой для сканера.

Как только вы закончили с одной страницей и записали все соответствующие данные в базу данных, вы должны избавиться от всех переменных, которые вы создали для этой работы.

Использование памяти после 100 страниц должно быть таким же, как после 1 страницы. Если это не так, выясните, почему.

Вы можете разделить работу между различными процессами. Обычно анализ страницы занимает не так много времени, как загрузка, поэтому вы можете записать все найденные ссылки в базу данных и иметь несколько других процессов, которые просто загружают документы в временный каталог. Если вы делаете это, вы должны убедиться, что

  1. Работники не скачивают ссылки.
  2. ваши процессы ждут новых ссылок, если их нет.
  3. временные файлы удаляются после каждого сканирования.
  4. процесс загрузки останавливается при исчерпании ссылок. Вы можете заархивировать это, установив «флаг уничтожения», это может быть файл со специальным именем или запись в базе данных.
...