gpt4 book ai didi

php - 如何在我的 PHP-Apache-PostgreSQL 站点中嵌入 python 脚本?

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:22 25 4
gpt4 key购买 nike

我有一个用 PHP-Apache-PostgreSQL 构建的网站; 我自己构建了一个 python 脚本,用于实现图像比较算法。它返回从数据库中获取的最相似的图像。

现在,我必须创建一个嵌入我的 Python 脚本的网页。我的问题是:哪个是最快最简单的解决方案?

  1. 创建一个 php 页面并与 python 脚本通信?
  2. 为 Apache 安装 WSGI 框架并创建一个 python 网页我的 python 脚本?
  3. 安装 WSGI+ Django 并创建一个 python 网页用我的 pythonscript?
  4. 使用套接字?

我尝试了前两个选项。在 php 页面中,我很难用我的 python 脚本传递变量使用WSGI,我不得不改变我的思维方式:在php中逻辑和接口(interface)是混合的,在python中是分开的。

更新:我的 python 脚本实现了图像比较算法。它返回从数据库中获取的最相似的图像。

最佳答案

在不完全了解您的 python 脚本在做什么的情况下,我将尝试让您快速了解一下我会在您的位置做什么。

我使用 Django适用于所有暴露于 Web 的应用程序。它非常适合自定义 url 模式,对遗留数据的访问非常好,与这些数据交互的 orb 涵盖了我所有项目中 99% 的需求。

将 Django 设置为在 apache 中运行在 Django documentation 中有详细说明。 .一旦你的新站点与你的 php 应用程序并排运行,你就可以开始它们之间的通信。

Django 访问 PHP 数据

Django manage.py 可以根据现有表为您创建模型。在某些情况下,您可以获得开箱即用的模型文件以供使用,但在大多数情况下,您需要创建自己的顺序并自定义表之间的关系。将 settings.py 的数据库部分设置为指向您的 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
}

设置完成后,您可以测试对数据的访问

python manage.py dbshell

当您确保与数据库的正确连接后,您就可以运行

python manage.py inspectdb > 模型.py

这将为您的每个表生成一个模型。将此模型文件添加到新的 django 项目中并应用。

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

在设置中修改已安装的应用程序以包含新安装的应用程序,您现在可以通过 django 应用程序访问整个 PHP 应用程序数据。为您希望在网络上公开的数据创建您的 View 。

作为补充说明,如果您想向公众伪装您正在混合使用 php 和 django/python,您可以使用以下内容创建 URL 模式:

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

为此,我认为您还需要设置 APPEND_SLASH=False

然后, View 会将 django View 视为另一个 php 脚本(只会更快、更亲切并注入(inject)神奇的 unicorn )。

通过 PHP 访问您的 Django 数据

在这里我会使用 REST api。简单的方法是使用 json.dumps(my_dictionary_of_data_for_php) 在您的 View 中构建一个 JSON 响应,更企业的方法是使用 tastypie .

然后您可以使用 PHP 访问数据

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

关于php - 如何在我的 PHP-Apache-PostgreSQL 站点中嵌入 python 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com