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?
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);