Многопроцессорная обработка в php с использованием Zend Framework 3

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

Фон

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

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

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

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

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

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

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

1 ответ

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

Другие вопросы по тегам