Боюсь, это уже за пределами здравого смысла для инструмента (Парсер).
andylars 24.01.2017 19:39
/ 24.01.2017 19:40
Ситуация, которую вы описали - типичная архитектура подсистем и под-сервисов, которые, при разной скорости обслуживания обработки - разруливаются через сервис очередей (MOM - Message-Oriented Middleware), из известных это RabbitMQ или проч.
В любом случае в этом паттерне, уже многое сложилось, и некий стандарт (AMQP (Advanced Message Queuing Protocol) и некий протокол. И типовые ситуации.
Даже наколенная архитектура подсказывает, что держать 10 сек и более (полчаса, час?) процесс, который обслуживает клиентский HTTP-запрос - как-то неправильно (ну только если это не бесконечный push/чат).
Что мешает процессу не делать прямой запрос туда, где у вас "долго и занято".
А положить в промежуточную базу-очередь. И тут же в течение 2-3 сек попытаться забрать из этой очереди ответ.
Если ответа нет, значит в ~2-3 сек завершить процесс с HTTP-ответом, где сказано, что "Обработка потребует времени". Можно помариновать юзера на этой же странице - дав ему какой-нить js-прогресс-бар, а можно даже отпустить походить по сайту/сервису, сказав, что как только данные будут готовы (мы вам нотификацию в шапку пришлём или даже средиректим) - тут уйма вариантов.
Можно играть или созданными для этого инструментами, или своими, но смысла натягивать "сову на глобус" через flock, когда есть mysql(memory-table)/memcached - не вижу.
- Расширенный file:lock, G_Z [M] 24.01.2017 17:57 / 25.01.2017 01:57
- Ответ, moko [M] 25.01.2017 13:38
- Боюсь, это уже за пределами здравого смысла для инструмента (Парсер)., andylars 24.01.2017 19:39 / 24.01.2017 19:40
- Ответ, G_Z [M] 24.01.2017 20:07
- Ответ, andylars 24.01.2017 20:25
- Ответ, G_Z [M] 24.01.2017 20:31 / 24.01.2017 20:32
- Ответ, andylars 24.01.2017 21:08
- Ответ, G_Z [M] 24.01.2017 21:22
- Ответ, andylars 25.01.2017 12:06 / 25.01.2017 12:07