@Kirill-Gorelov
С ума с IT

Теория php программирования на примере?

Всем привет, парни.
Усиленно учусь и повышаю свои навыки в программировании.
И с каждой сложной задачей возникает ряд вопросов. И как раз один из них.
Очень важное замечание. В примерах я имею ввиду обычный сервер на linux с оперативной памятью до 4ГБ. Просто я сейчас работаю на таком и не имею ресурсов яндекса.

Возьмем веб-сервис, который проверяет доступен ли сайт в данный момент или нет.
Задача для одного сайта простая, с помощью curl(как один из вариантов), сделать легко.
Но как быть, если таких сайтов надо проверять несколько тысяч и проверять нужно раз в минуту?
Если в первом случае, с одним сайтом, можно сделать по cron, а как быть с тысячами сайтов?
В цикле проверять каждый сайт, но тогда каждый сайт будет невозможно проверять раз в минуту, на это может уйти несколько часов.

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

Мои варианты, я не считаю идеальными и возможно даже не рабочими при больших объемах. Потому что это требует больших ресурсов сервера. Подскажите, как лучше реализовывать подобные задачи, может уже кто-то делал подобное?
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
1. веб-сервис, который проверяет доступен ли сайт
Я верю что у вас нет ресурсов яндекса, но чудес не бывает. Если серверу не хватает процессора, памяти или ширины канала, то нужно увеличивать мощность сервера или увеличивать количество серверов. Ну и смотря что вы имеете в виду под "доступен". Если пинговать или брать только заголовки с определенных страниц, то можно и тысячи в минуту. Хватило бы процессора и канала.

2. сервис который мониторит фриланс биржи
Вероятно, фрилансеров будет намного больше, чем ключевых слов.
Так что лучше составить список всех ключевиков, искать по ним, а результаты уже раздавать подписчикам.
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
"Возьмем веб-сервис, который проверяет доступен ли сайт в данный момент или нет.
Но как быть, если таких сайтов надо проверять несколько тысяч и проверять нужно раз в минуту?"

Возьмем хлебокомбинат и магазин возле вашего дома, и нужно раз в минуту привозить ящик батонов.
Но как быть, если нужно раз в минуту привозить 12 вагонов?
НИКАК, тут даже постройка железной дороги не поможет, потому что разгрузить их не выйдет.
Ставить нужно реалистичные задачи.
Нужно четко понимать, что какие бы быстрые не были процессоры и линии связи, везде есть ограничения, и следует искать варианты, которые устроили - в том числе и в самом изначальном условии задачи, например выделять на проверку не минуту, а 10 минут, 30 минут, час.

Конечно можно оптимизировать, найти реальное решение проблемы. Например вместо curl использовать ping, но это проверит только доступность хоста, а не сайта. Можно по ssh запрашивать состояние сервера, или сделать наоборот - чтобы каждый сайт сам отчитывался с определенной периодичностью, тогда проверять нужно будет только те, которые вовремя не отчитались.

В общем гораздо проще выполнять практические задачки, если они имеют какое-то практическое применение, тогда у вас постановка задачи будет реалистичная и достижение результата будет ВАМ понятным.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы