Задать вопрос

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

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

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

Какой язык или технологию посоветуете? Думал про Python или С++ Пол жизни опыта на Delphi....Но сервер на линуксе. PHP Скрипт имеет ограничение на время исполнения..
Ну в общем кто чем может)))
  • Вопрос задан
  • 1077 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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 не имеет ограничения на время исполнения.
Пишите на том, что лучше знаете.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы