всем привет!
в учебных целях хочу написать небольшой парсер. и сейчас мой скрипт парсит ссылки со страницы, пишет их в бд, переходит на следующую страницу, если она есть, дальше рекурсия. загвоздка в том, что он упирается в таймаут ожидания ответа от страницы(?). из вариантов которые приходят в голову - перевести управление запуском парса в консоль, либо на фронт и через аякс посылать запрос а в ответе получать ссылку на следующую страницу и если она есть то повторять запрос. но аякс увеличит время выполнения в разы, хотя и даст возможность сделать некий прогресс-бар. Есть же опытные люди наверняка, как вообще обычно реализуются такие вещи?
Вы в целом в той ситуации, в которой находится каждый новичок, который начинает писать свои программы на PHP: все скрипты запускаются из браузера! :)
Ну в целом да, удобно, пока не поймете определенных проблем связанных с timeout, зависанием браузера при выводе большого объема данных и т.д. True разработчики так не делают, потому что познают весь смысл командной строки и ее прелести, поэтому запускают долгие скрипты только от туда и благодаря этому не используются излишне php-fpm.
Ваша задача при написании программного обеспечения, которое отвечает на запросы пользователей - это максимально быстро отдать ответ, чтобы не засорять очередь запросов!
Если у вас простой скрипт и нет необходимости в том, чтобы это как-то связывать с клиентской частью, то просто запускайте его из комадной строки с использованием такого понятия, как аргументы. В аргумент передавайте адрес, который нужно парсить.
Более сложные варианты реализации, когда требуется например создать форму в которой клиент будет вводить адрес сайта, а вы будете его парсить через какое-то время предполагают использование хранилища для хранения этой информации.
Де́мон (daemon, dæmon, др.-греч. δαίμων божество) — компьютерная программа в системах класса UNIX, запускаемая самой системой и работающая в фоновом режиме без прямого взаимодействия с пользователем.
Для начала, вы можете создавать записи в БД со списком урлов, которые нужно парсить и забирать их скриптом по определенному запросу, который работает в режиме демона. Конечно, вы врятли еще знакомы с понятием демона, поэтому можете начать с создания задачи в планировщике cron, который будет запускать этот скрипт с определенной периодичностью.
Потом, вы познакомитесь с очередями, кстати вот тут описан случай который вас интересует, и будете использовать действительно мощную и распределенную архитектуру при правильном подходе.
Если слишком не заморачиватся, то можно не в браузере запускать, а в консоле wget
wget -O - -q -t 9999 http://www.example.com/parser/run
Параметр -t 9999 устанавливает время ожидания
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости