Длительные операции PHP — ложиться весь сайт, почему?
Подскажите пожалуйста, как вообще грамотно это делается.
Может сам PHP не так настроен.
Есть сайт написанный на PHP, и места, где через CURL идет запрос к сторонним веб-сервисам, от веб-сервисов приходит ответ, обрабатывается и показывается пользователю.
И вот когда пользователей сайта много, а сторонние веб-сервисы нагружены(отдают ответ не быстро), то начинает тормозить(и выдавать ошибку 502) вообще весь сайт, даже страницы, где нет запросов к веб-сервисам.
Почему? И что делать?
Как я понимаю, все процессы забиваюся ожиданиеми от веб-сервисов, поэтому новые пользователи стоют в очередь и ждут пока CURL запросы отдадут результат.
А как быть тогда? Как оставить основной поток, что бы работало, а вот эти CURL запросы в отдельные потоки что ли?
Ну по-хорошему отказоустойчивость вашего приложения не должна зависеть от сторонних сервисов. Вот например доклад как это работает у aviasales, проблема похожа на вашу https://www.slideshare.net/HDConf/aviasales-39967802
Прежде всего отказаться от файловых сессий.
Дальше мониторить доступность новых воркеров. Если затык в них, то использовать менеджер очередей и демонов асинхронных запросов. reactphp/http-client в помощь