@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Как на web сервере организовать сложные вычисления?

Делаю web сервер. Ubuntu, apache, php7. Требуется проводить большие вычисления на стороне сервера с асимптотиками O(n^2), O(n log n), O(n!). Правильным ли подходом будет писать эти вычисления на C++?
PHP вызывает исполняемый файл, передает в него данные, затем получает возвращаемый результат.
Как это можно реализовать?
Какие еще подходы есть?
  • Вопрос задан
  • 379 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
релизовать асинхронно

питон, с++, голанг, нода, джава - все что побыстрее ПХП
Ответ написан
flr
@flr
Скорости PHP7 для этих вычислений не хватает? Если уверены, что нет, то основные подходы:

1. Вызов исполняемого файла (как уже упомянуто).

Нормальный подход. Для старта можно смело начинать с него. Да, он кажется некрасивым, но вам задачу решить или чисто академический интерес? Этот подход перестает работать, если бинарник для запуска получается довольно тяжелым и при этом сервис высоконагруженный. В общем, есть накладные расходы на запуск нового процесса в системе на каждый HTTP запрос.

2. Написание расширения для PHP, добавляющего метод или класс.

С технической точки зрения — один из лучших вариантов. Но с практической — один из худших. Помимо поддержки актуальности бизнес логики придется дополнительно поддерживать актуальность самого синтаксиса расширения. Также дополнительные временные расходы на администрирование.

3. Микросервис (демон), который будет принимать запросы через очередь задач или напрямую.

Как по мне — это некий компромисс. С одной стороны нет расходов на запуск нового процесса на каждый запрос. С другой — нет завязки на синтаксис PHP расширения. Такой демон можно писать не на С, а на чем-то более дружелюбном, например, Go.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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