Что лучше выбрать для многопоточной программы на выделенном сервере?

Подскажите, кто знает.
Нужна программа, которую запускаешь и она работает круглосуточно пока внешней командой не остановишь.
В программе должно быть около 30 потоков и в каждом потоке каждую секунду нужно отправлять по 1 запросу к http серверу с помощью SSL и обработать результаты.

Есть выделенный сервер на Линуксе.

Какой язык или технологию посоветуете? Думал про Python или С++ Пол жизни опыта на Delphi....Но сервер на линуксе. PHP Скрипт имеет ограничение на время исполнения..
Ну в общем кто чем может)))
  • Вопрос задан
  • 1071 просмотр
Пригласить эксперта
Ответы на вопрос 7
@beduin01
Для вас идеальным вариантом будет vibed.org
Вот книжка ddili.org/ders/d.en/index.html
примеры есть в репозитарии самого vibed
Ответ написан
Olej
@Olej
инженер, программист, преподаватель

В программе должно быть около 30 потоков и в каждом потоке каждую секунду нужно отправлять по 1 запросу к
...
Какой язык или технологию посоветуете? Думал про Python или С++

Многопоточность в Python - это фикция, квазипараллельнсть, она не пригодна для повышения производительности или использования SMP.
В C++ это реализуемо, но сильно трудоёмко.
Используйте Go - там высоко эффективная высоко уровневая параллельность + хорошая символьная обработка (ваши HTTP, SSL).
Ответ написан
akubintsev
@akubintsev
Опытный backend разработчик
Я не уверен, что вам реально нужно 30(!) потоков. Если вам нужно одновременно обрабатывать 30 подключений по http, то с вероятностью в 90% вас устроит один процесс, работающий в асинхронной модели. Для этого хватит и php. Посмотрите в сторону reactphp или amphp.

Для оставшихся 10% случаев, а может даже и меньше, вам потребуется действительно многопоточность, чтобы как-то разложить нагрузку на ядра процессора. Но это нужно лишь в том случае, если каждое подключение после получения данных производит какую-то очень ресурсоёмкую операцию, блокирующую всё, что только можно, то есть асинхронная модель уже становится бесполезной. В этом случае тоже можно и на php написать, например с помощью icicleio/concurrent, но наверное проще было бы на Go с точки зрения настройки среды выполнения.
Ответ написан
Комментировать
sim3x
@sim3x
Ответ написан
Комментировать
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Как уже написали выше, используй тот яп который лучше знаешь. Если пол жизни работал с delphi можешь посмотреть в сторону java. На мой взгляд самая большая проблема, не в том как запустить 100500 потоков, а как организовать их взаимодействие (что скачено, что качать, куда это и как ложить, что делать в случае ошибок и т.д.)

На php даже можно не форкать ничего, пишешь bash скрипт, который запускает 30 инстансов php-cli, где каждый инстанс работает с очередью данных (какой-нибудь rabbitmq) и всё. Главное не усложняй :)
Ответ написан
Комментировать
@lexa4lexa
Go.
golang
Изначально заточен на многопоточность.
Очень экономично позволяет создавать хоть тысячи параллельных запросов.
Синтаксис - очень похож на С и на Pascal/Delphi
Ответ написан
Комментировать
savostin
@savostin
Еще один программист
PHP cli не имеет ограничения на время исполнения.
Пишите на том, что лучше знаете.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы