2010-04-06 5 views
3

Je me rends compte que c'est probablement quelque chose d'étrange, mais voici ce que j'ai.PHP en C/C++ à travers le script CGI

J'ai une application (moteur de reconnaissance d'écriture manuscrite) écrite en C/C++. Cette application a wrapper Perl qui a été faite par les auteurs de l'application en utilisant SWIG. Mon site web est écrit en PHP, donc je cherche des moyens de faire fonctionner PHP avec l'application C/C++. La seule façon que je peux penser maintenant est de créer un script CGI (script Perl) qui accepte la requête POST de mon site web (requête AJAX), l'envoie au moteur de reconnaissance via son wrapper Perl, obtient les données requises et renvoie les données requises en réponse à la requête AJAX.

Pensez-vous que cela pourrait être fait de cette façon? Y a-t-il de meilleures solutions?

Merci!

Répondre

2

Pensez-vous que cela pourrait être fait de cette façon?

Oui, aucune raison pour laquelle cela ne peut pas être fait.

Y a-t-il de meilleures solutions?

Peut être. Si vous avez l'intention d'exécuter le wrapper perl en tant qu'appel système sur un script Perl distinct, vous n'avez pas besoin d'un script Perl CGI distinct. Vous pouvez simplement faire des appels système de PHP directement sur votre site. Pas de grande différence, mais peut-être aider si PHP est plus votre zone de confort pour les choses web que CGI de Perl

OTOH, si l'encapsuleur de script Perl est un ensemble assez évident et simple d'appels d'API, et que vous vous sentez à l'aise avec Perl CGI , un meilleur soltrion consiste à porter ce script Perl en ligne de commande dans le script CGI Perl qui utilise l'API en interne, en contournant les appels système.

Pour les gros volumes de données, la suppression des appels système est une question de performances Big Win, et permet une gestion des erreurs beaucoup plus simple et plus facile.

2

Ce que vous proposez est:

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

Il n'y a rien particulièrement mal avec cette approche, bien qu'il soit clairement pas la façon la plus efficace possible de le faire. Quelle est l'importance de la performance? Si cela ne doit pas être incroyablement rapide, assurez-vous de le faire de cette façon, ce qui semble être le plus facile à développer.

Si vous voulez aller plus loin, le point d'optimisation évidente dans le schéma est à l'effondrement au-dessus des deux couches Perl:

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

La question est, est-il utile de votre temps pour ce faire ? Vous pouvez regarder la source pour le wrapper Perl et décider pour vous-même. Mon conseil serait de développer d'abord le moyen simple et ensuite, si pour une raison quelconque, vous décidez qu'il est insuffisant, de fusionner les deux scripts Perl en un seul. Mais pour le moment, ne vous en faites pas et allez de l'avant avec votre idée.

Questions connexes