2010-04-06 4 views
3

Я понимаю, что это, наверное, что-то странное, но вот что у меня есть.PHP на C/C++ через CGI-скрипт

У меня есть приложение (механизм распознавания рукописного ввода), написанный на C/C++. Это приложение имеет оболочку Perl, которая была сделана авторами приложения с использованием SWIG. Мой сайт написан на PHP, поэтому я ищу некоторые способы заставить PHP работать с приложением C/C++.

Единственный способ, с помощью которого я могу сейчас думать, - создать скрипт CGI (perl-скрипт), который принимает запрос POST с моего сайта (запрос AJAX), отправляет его в механизм распознавания через свою Perl-оболочку, получает требуемые данные и возвращает требуемые данные в ответ на запрос AJAX.

Как вы думаете, это можно сделать так? Есть ли лучшие решения?

Спасибо!

ответ

2

Считаете ли вы, что это можно сделать таким образом?

Да, нет причин, по которым это невозможно.

Есть ли лучшие решения?

Может быть. Если вы намерены выполнить оболочку perl как системный вызов отдельного скрипта Perl, вам не нужен отдельный скрипт Perl для CGI. Вы можете просто выполнять системные вызовы с PHP на своем сайте напрямую. Не большая разница, но может помочь, если PHP больше для вашей комфортной зоны для веб-материала, чем CGI Perl.

OTOH, если оболочка Perl-скрипта является довольно очевидным и простым набором вызовов API, и вам комфортно с Perl CGI , лучшим решением является перенос этого сценария Perl командной строки в скрипт Perl CGI, который использует API внутри организации, минуя системные вызовы.

Для больших объемов информации, удаленные системные вызовы - это высокая производительность игры, а также позволяет значительно улучшить и упростить обработку ошибок.

2

Что вы предлагаете это:

web client <-> Perl CGI script <-> Perl wrapper <-> C program 

Там нет ничего особенно плохого в таком подходе, хотя это явно не самый эффективный из возможных способов сделать это. Насколько важна производительность? Если это не должно быть удивительно быстро, обязательно сделайте это так, что звучит так, как это проще всего развиваться.

Если вы хотите пойти на шаг дальше, то очевидно, точка оптимизации в приведенной выше схеме, чтобы свернуть два слоя Perl:

web client <-> Perl CGI script <-> C program 

Вопрос в том, стоит ли ваше время, чтобы сделать это ? Вы можете посмотреть источник для оболочки Perl и решить сами.

Моим советом было бы сначала разработать его простым способом, а затем, если по какой-либо причине вы решите, что этого недостаточно, чтобы слить два сценария Perl в один. Но пока не беспокойтесь об этом и продолжайте свою идею.

Смежные вопросы