serg_small_developer
@serg_small_developer
Начинающий прогер

Как сканировать Sitemap?

Всем привет. Делаю для себя сервис.
Первый раз при добавлении сайта собираю по нему такие данные: title, description, скорость загрузки страницы и т.д. сохраняя все в BD.
Скорость получаю с помощью этих ссылок
https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=desktop&url=site.com
https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=mobile&url=site.com

title, description и всю остальную инфу собираю с помощью phpQuery.

Это был первый скан при добавлении сайта, дальше я каждый день (кроном) сканирую по той же схеме и сравниваю с показателями из базы, если есть изменения то я записываю в таблицу изменений и делаю update вчерашнего скана, придумал так для того чтобы отслеживать изменения в сайтмапе каждый день и чтобы при этом каждый день в базу не писало данные по новому дню, делая базу все больше и больше, а только фиксировать изменения по сравнению со вчерашним днем.

Все работает отлично!, но делал я это все до сегодняшнего дня только на сайтах с sitemap не больше 1000 урлов, сейчас нужно делать тоже с сайтами в которых в сайтмапе находиться >100 000 ссылок, и вот я думаю если скан одного сайта в которого ~1000 занимает довольно продолжительное время (точно не замерял), так вот если у меня есть 5 сайтов с sitemap 100 000 и 5 с 1000, то для того чтобы их просканить нужно очень много времени (дня мало будет))).

Вопрос 1: Кто подскажет как лучше делать сканирование больших сайтов?, раз в три дня или раз в неделю, может у кого-то есть другие идеи, и как работа такого скрипта повлияет на сервер?, если я запущу такой скрипт на сканирование >500 000 ссылок то будет большая нагрузка на сервер и хз как это повлияет на сайтах которые лежат на нём.

Вопрос 2: Как ещё можно получить скорость загрузки стр.? т.к. большая часть сканирования ссылки уходит на Pagespeed
https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=desktop&url=site.com
https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=mobile&url=site.com

он очень долго отдает результат.

И прошу совета по общей схеме, так делать нормально или если лучшие варианты. Буду рад услышать всех!)
  • Вопрос задан
  • 483 просмотра
Пригласить эксперта
Ответы на вопрос 1
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Кто подскажет как лучше делать сканирование больших сайтов?
Только не смейтесь, но подобное лучше делать на Си и/или в несколько потоков, если говорить о необходимости максимальной производительности подобных процессов.

и как работа такого скрипта повлияет на сервер?
Вы можете сами контролировать максимальную нагрузку процесса на сервер (машину), например с помощь (re)nice.

Вопрос 2: Как ещё можно получить скорость загрузки стр.?
Такой же точно результат как у GPS (Google Page Speed) - никак. Ваш результат, как бы Вы его не получали, будет отличаться от результата GPS по ряду причин (думаю, они довольно очевидны, что бы их озвучивать). Но в целом процесс довольно прост в своей логике:
0. Определяемся, что мы хотим получить, скорость загрузки всей страницы или скорость загрузки HTML-кода страницы.
1. Запускаем таймер (например, как описано тут, для PHP
2. Скачиваем HTML-код
3. Сканируем все ссылки на странице, если нас интересует и циклически загружаем их (если нам нужно время полной загрузки страницы)
4. Останавливаем таймер, получаем результат

P.S. То, чем пользуется GPS - предположительно (скорее всего) основано на браузере Chromium и работает не совсем так просто, как возможно ожидалось (это ещё одна из причин, почему Ваше время и время GPS будут отличаться, вопрос больше в том, какое именно время Вы хотите получить). В рамках "тостерного ответа", (впрочем как и любого другого ответа) довольно сложно описать все принципы работы подобных схем, для этого потребуется как минимум серия статей и хорошие знания C/++ у спрашивающего, с очень большой вероятностью (для того, что бы изменить исходники Chromium'а по себя, соответствующим образом).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы