многопоточность — многопроцессорность в php с использованием Zend Framework 3

Возможно ли многопроцессорность / многопоточность в php из запроса http.

Фон

Я работаю над проектом, в котором я ожидаю, что некоторые данные (не от пользователя, поэтому загрузка данных последовательна) будут загружены в API.

Я хочу отделить процесс таким образом, чтобы в случае успешной загрузки данных я уведомлял этого клиента, отключал его и обрабатывал данные в другом потоке. Прямо сейчас клиент ожидает обработки данных и в случае успеха отключается.

Мое исследование

Я изучал процесс разветвления, но он всегда сопровождался предупреждением о том, что он не должен использоваться на веб-сервере, и, кроме того, я хотел пакет / модуль, который можно масштабировать вместе с проектом, над которым я работаю.

Pthreads: это модуль потоков php. Как отмечалось выше, он не настроен для работы с веб-сервером только на cli.

Amphp: это модуль, построенный с pthreads, и он идет с тем же предостережением.

Это вызывает вопрос, как лучше решить проблему? Я понимаю проблему, если вы открываете новый поток для каждого соединения, у вас будет 1000 потоков для 1000 соединений, и вы можете легко перегрузить сервер, если это увеличится, но мой случай уникален тем, что я не хочу многопоточности для человеческих соединений и количество соединений можно легко предвидеть.

1

Решение

Хорошо для тех, кто имеет подобные сомнения, как я, я думаю, что это можно исправить с помощью брокера сообщений. Я думал о различных возможностях, таких как демон, crontab, но я думаю, что брокер сообщений — самый чистый способ сделать это.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]