Многопоточные вычисления в PHP
Есть множество подходов к многопоточности и у каждого подхода свои преимущества и недостатки. Подходы:
- Создаем общедоступную очередь, например, на Beanstalk, RabbitMQ или Redis или еще на чем-нибудь. Создаем PHP скрипт, который будем запускать из консоли несколько раз, создавая нужное количество процессов. Это решение наиболее универсальное.
- Плюсы. Хорошая масштабируемость на несколько серверов, отказоустойчивость.
- Минусы. Может быть неудобно или непрозрачно с точки зрения архитектуры. Если в обработке данных несколько “узких горлышек”, то возможно, понадобится предусмотреть несколько очередей.
- Создавать потоки через Curl, для такого решения есть даже проект на гитхабе.
- Плюсы. Мне неизвестны.
- Минусы. Ненадежно.
- Использовать popen().
- Плюсы. Просто с первого взгляда.
- Минусы. Сложно организовать равномерную загрузку ядер. Трудности в создании общей очереди.
- Написать собственное расширение для PHP и пользоваться им.
- Плюсы. Можно сделать полный фен шуй.
- Минусы. Затратно.
- Воспользоваться расширением PCNTL. Насколько это удачное решение, возможно, кто-то расскажет в комментариях.
- Воспользоваться готовым расширением pthreads.
- Плюсы. Надежность. Можно прятать многопоточное поведение внутри модуля, не выносить на уровень архитектуры. Простота в создании общей очереди.
- Минусы. Нельзя масштабировать на несколько серверов.
Источник: 1
24.05.2016 11:38
Комментарии
Комментариев пока нет.