Возможно ли многопроцессорность / многопоточность в php из запроса http.
Фон
Я работаю над проектом, в котором я ожидаю, что некоторые данные (не от пользователя, поэтому загрузка данных последовательна) будут загружены в API.
Я хочу отделить процесс таким образом, чтобы в случае успешной загрузки данных я уведомлял этого клиента, отключал его и обрабатывал данные в другом потоке. Прямо сейчас клиент ожидает обработки данных и в случае успеха отключается.
Мое исследование
Я изучал процесс разветвления, но он всегда сопровождался предупреждением о том, что он не должен использоваться на веб-сервере, и, кроме того, я хотел пакет / модуль, который можно масштабировать вместе с проектом, над которым я работаю.
Pthreads: это модуль потоков php. Как отмечалось выше, он не настроен для работы с веб-сервером только на cli.
Amphp: это модуль, построенный с pthreads, и он идет с тем же предостережением.
Это вызывает вопрос, как лучше решить проблему? Я понимаю проблему, если вы открываете новый поток для каждого соединения, у вас будет 1000 потоков для 1000 соединений, и вы можете легко перегрузить сервер, если это увеличится, но мой случай уникален тем, что я не хочу многопоточности для человеческих соединений и количество соединений можно легко предвидеть.
Хорошо для тех, кто имеет подобные сомнения, как я, я думаю, что это можно исправить с помощью брокера сообщений. Я думал о различных возможностях, таких как демон, crontab, но я думаю, что брокер сообщений — самый чистый способ сделать это.
Других решений пока нет …