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

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

И прошу совета по общей схеме, так делать нормально или если лучшие варианты. Буду рад услышать всех!)
  • Вопрос задан
  • 472 просмотра
Пригласить эксперта
Ответы на вопрос 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'а по себя, соответствующим образом).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽