2010-11-10 11 views
4

Est-il possible d'avoir un programme C++ en cours d'exécution sur un serveur qui se trouve et attend d'être passé des arguments par un processus PHP. Le programme C++ traiterait ensuite ces arguments et retournerait un résultat à PHP.Comment utilisez-vous PHP pour interagir avec un processus C++?

J'ai fait des recherches sur le web et je peux voir plusieurs façons d'exécuter un programme C++ à partir de PHP, mais je n'arrive pas à trouver un moyen d'interagir avec un programme C++ déjà lancé.

Le genre de programmes C++ auxquels je pense sont ceux qui pourraient prendre du temps à mettre en place par exemple. Ils créent une grande structure de données et je ne veux donc pas les exécuter chaque fois que j'en ai besoin. Je veux que les programmes C++ créent leurs structures de données et puis se reposent et attendent jusqu'à ce que PHP ait demandé des informations de cette structure de données.

Merci

+0

Y a-t-il une raison pour laquelle vous ne pouvez pas stocker vos structures de données dans une base de données supportée nativement par PHP? – badgerr

Répondre

3
+0

J'ai écrit quelques outils en C++ et je ne voulais pas les convertir, j'ai donc utilisé des tubes nommés via PHP pour communiquer! Excellente solution – djTeller

+0

Merci à tous, merci Preet. J'ai regardé des tuyaux nommés et je pense qu'ils sont la voie à suivre pour moi. Mon seul problème est que lorsque plus d'une instance de script PHP client écrit dans le canal nommé, j'ai des problèmes car j'obtiens plusieurs ensembles d'entrée et de sortie sans savoir quelle est la sortie correcte pour l'entrée particulière. Existe-t-il un moyen d'autoriser une seule instance php à écrire en même temps sur le canal nommé et d'attendre les autres instances pour attendre leur tour? – Columbo

+0

En fonction de la plate-forme, vous pouvez utiliser Queuing. sur Windows il y a MS MQ et sur Linux vous avez MQSeries. Personnellement, je mettrais un identifiant sur le message (appelé un ID de corrélation) dans le tuyau. Puis, lors de la réception du message, mettez les messages ensemble en fonction de l'identifiant avec est unique au processus PHP. –

1

Would quelque chose comme SWIG être utile pour vous? (http://www.swig.org/Doc1.3/Php.html) Vous pourriez envelopper la fonctionnalité que vous voulez utiliser, pour l'exposer à votre code PHP.

Questions connexes