Возможность использования PHP exec() для ускорения бэкэнда

Из производительности PHP exec() я понимаю, что запуск exec () создает накладные расходы, но в больших программах или на веб-сайтах не будет ли полезно иметь части бэкэнда, написанные на другом языке, и PHP будет вызывать программу с использованием exec?

Например, я написал / выполнил тест с большим количеством манипуляций со строками - PHP занял 2,3 с, а Java -.52, а C++ - 0,33. Разница в скорости уже очевидна. Время можно было бы ускорить еще больше, если бы я работал в многопоточном режиме. Я также обнаружил, что параллелизм может быть достигнут с чем-то вроде

exec("./largeoperation > mydir/$dirname.data &"); 
//or
exec('java Backend > /dev/null 2>&1 &');

Со всеми этими преимуществами, кроме необходимости писать код на другом языке, я не понимаю, почему я не должен переводить больше частей моего бэкенда в более быструю программу, написанную на другом языке. Кроме того, я знаю о существовании мостов, таких как Работа с Php-Java Bridge, но я не уверен, что это будет намного быстрее, чем простой exec(). У кого-нибудь есть какие-либо подробности о exec()?

1 ответ

Решение

В то время как вы могли бы работать на другие программы, используя exec и друзья, то, что вы пытаетесь сделать, лучше всего сделать с помощью системы очереди сообщений. Хорошо спроектированная очередь сообщений позволит вам писать рабочие программы на любом языке, который вам нужен. Они являются отличным решением, когда вам нужно что-то сделать на другом языке, в среде или на сервере.

Есть много очередей сообщений, но я большой поклонник Gearman. Он был построен теми же людьми, которые принесли нам memcached. Взгляните на расширение PECL.

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