Возможность использования 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.