Comment puis-je intégrer un script python dans mon site PHP-Apache-PostgreSQL?

J’ai un site internet intégré à PHP-Apache-PostgreSQL; Je me suis construit un script python qui implémente un algorithme de comparaison d’images . Il renvoie la plupart des images similaires sockets depuis la firebase database.

Maintenant, je dois créer une page Web sur laquelle j’intègre mon script python. Ma question est la suivante: quelle est la solution la plus rapide et la plus facile?

  1. Créez une page php et communiquez avec le script python?
  2. Installez le framework WSGI pour Apache et créez une page Web python avec mon script python?
  3. installer WSGI + Django et créer une page web python avec mon pythonscript?
  4. en utilisant un socket?

J’ai essayé les 2 premières options. dans une page php j’ai eu du mal à communiquer des variables avec mon script python En utilisant WSGI, je dois changer ma façon de penser: en php, les interfaces sont mixtes, en python sont divisées.

UPDATE : mon script python implémente un algorithme de comparaison d’images. Il renvoie la plupart des images similaires sockets depuis la firebase database.

Sans être complètement au courant de ce que fait votre script Python, je vais essayer de vous donner un aperçu de ce que je ferais à votre place.

J’utilise Django pour toutes les applications exposées au Web. Cela fonctionne très bien pour personnaliser les modèles d’URL, l’access aux données héritées est superbe et l’orbe pour interagir avec ces données couvre 99% de mes besoins dans tous les projets.

Configurer Django pour qu’il s’exécute dans Apache est expliqué en détail dans la documentation de Django . Une fois que votre nouveau site est installé côte à côte avec votre application php, vous pouvez commencer la communication entre eux.

Django accédant aux données PHP

Django manage.py peut créer un modèle basé sur des tables existantes. Dans certains cas, vous pouvez obtenir un fichier de modèle prêt à l’emploi, mais dans la plupart des cas, vous devez créer votre propre commande et personnaliser la relation entre vos tables. Configurez la section firebase database de vos parameters.py pour pointer vers la firebase database de votre application PHP.

DATABASES = { 'default': { 'ENGINE':'django.db.backends.postgresql_psycopg2', 'NAME': 'myphpappdbname', 'USER': 'phpuser', 'PASSWORD': 'phppassword' # snipped away other options. Might or might not bee needed } 

}

Une fois que vous avez votre configuration, vous pouvez tester l’access à vos données avec

 python manage.py dbshell 

Lorsque vous avez assuré une connexion correcte à la firebase database, vous pouvez exécuter

python manage.py inspectdb> models.py

Cela générera un modèle pour chacune de vos tables. Ajoutez ce fichier modèle à votre application dans votre nouveau projet django.

 python manage.py startapp phpextension mv models.py phpextension/models.py 

Modifiez vos applications installées dans les parameters pour inclure votre application nouvellement installée et vous avez maintenant access à l’ensemble de vos données d’application PHP via votre application Django. Créez vos vues sur les données que vous souhaitez exposer sur le Web.

Pour append au public que vous mixez php et django / python, vous pouvez créer vos modèles d’URL avec les éléments suivants:

 url(r'^my_command.php$', 'phpextensions.views.my_command', name="my_command"), 

Pour que cela fonctionne, je pense que vous devez également définir le paramètre APPEND_SLASH=False .

Les vues verront alors la vue django comme un autre script php (plus rapide, plus gracieux et infusé de licornes magiques).

Accès à vos données Django via PHP

Ici, je voudrais utiliser un api REST. Le moyen le plus simple est simplement de créer une réponse JSON dans votre vue avec json.dumps (my_dictionary_of_data_for_php) et plus la méthode d’entreprise est d’utiliser tastypie .

Ensuite, vous pouvez accéder aux données en PHP en utilisant

 $fc = file_get_contents('http://yourdomain.com/path/to/django/my_command.php'); $django_data = json_decode(fc);