2010-06-24 4 views
2

J'ai une version de l'algorithme A * qui construit un graphique du réseau routier et cyclique au Royaume-Uni dans les listes Python. Il faut environ 30 secondes pour initialiser, mais une fois terminé peut très rapidement trouver l'itinéraire le plus court entre deux sommets. Les identifiants de sommets de début et de fin sont fournis par PHP.Appel d'un programme Python à partir de PHP

J'essaie de trouver la meilleure façon de communiquer entre PHP et le programme Python. Je veux seulement faire la phase d'initialisation lorsque le serveur Apache démarre, donc ma question est: Comment maintenir le programme python en vie et demander des routes à partir de PHP via php? J'ai une configuration GLAMP .

+0

Qu'est-ce que le G représente? –

+0

@Pekka Probablement GNU/Linux par opposition à Linux, car GNU/Linux est le nom techniquement correct pour un système d'exploitation avec le noyau Linux et les sous-systèmes GNU. – rossipedia

+0

@Bryan aaah, à la vôtre. @Simon c'est un système impressionnant que vous construisez là-bas! **Sensationnel**. Quel genre de données utilisez-vous pour cela? Y aura-t-il une version pour la région de Cologne dans un futur concevable? :) –

Répondre

2

La manière la plus simple que je puisse imaginer serait XMLRPC. Python rend terriblement facile de mettre en place un serveur XMLRPC, et il y a php_xmlrpc pour les fixations du côté PHP ...

def calculate_path(v1, v2): 
    return [v1, ..., v2] 

from SimpleXMLRPCServer import SimpleXMLRPCServer 
server = SimpleXMLRPCServer(('localhost', 9393)) 
server.register_function(calculate_path) 
server.serve_forever() 

et vous êtes en cours d'exécution et devrait être en mesure de faire un appel XMLRPC pour calculate_path sur http://localhost:9393/ de votre application PHP.

+0

Merci pour toutes les solutions offertes, mais je suis allé pour celui-ci à la fin car il semblait le plus simple. Cependant, il m'a fallu un certain temps pour que le module Pear fonctionne avec PHP5.3, ce que j'ai fait en prédéfinissant la fonction dl() {return false;} Nous avons maintenant supprimé la plupart des paquetages XMLRPC pour avoir un Version très légère. –

0

Je créerais un serveur "backend" à partir de votre application Python. Il y a plusieurs façons d'appeler dans l'application Python:

Cela évite toute pénalité de démarrage pour l'application Python.

Questions connexes