2

PHP-Apache-PostgreSQL で構築されたインターネット サイトがあります。画像比較のアルゴリズムを実装する Python スクリプトを自分で作成しました。データベースから取得した最も類似した画像を返します。

ここで、Python スクリプトを埋め込む Web ページを作成する必要があります。私の質問は次のとおりです。最速で簡単なソリューションはどれですか?

  1. PHP ページを作成し、Python スクリプトと通信しますか?
  2. Apache 用の WSGI フレームワークをインストールし、Python スクリプトで Python Web ページを作成しますか?
  3. WSGI+ Django をインストールし、pythonscript で python Web ページを作成しますか?
  4. ソケットを使用していますか?

最初の 2 つのオプションを試しました。PHP ページでは、Python スクリプトと変数をやり取りするのに苦労しました WSGI を使用して、考え方を変える必要があります。

更新: 私の python スクリプトは、画像比較のアルゴリズムを実装しています。データベースから取得した最も類似した画像を返します。

4

1 に答える 1

1

あなたの python スクリプトが何をしているかを完全に認識していなくても、私があなたの代わりに何をするかを簡単に説明しようと思います。

私はすべての Web 公開アプリケーションにDjangoを使用しています。URL パターンのカスタマイズはうまく機能し、レガシー データへのアクセスは優れており、これらのデータを操作するための Orb は、すべてのプロジェクトで私のニーズの 99% をカバーしています。

Apache で実行するように Django を設定する方法については、Django のドキュメントで詳しく説明されています。新しいサイトを立ち上げ、php アプリと並行して実行したら、それらの間の通信を開始できます。

PHP データにアクセスする Django

Django manage.py は、既存のテーブルに基づいてモデルを作成できます。すぐに使用できるモデル ファイルを入手できる場合もありますが、ほとんどの場合、独自の順序で作成し、テーブル間の関係をカスタマイズする必要があります。PHP アプリ データベースを指すように、settings.py のデータベース セクションをセットアップします。

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 > models.py

これにより、各テーブルのモデルが生成されます。このモデル ファイルを新しい django プロジェクトの app に追加します。

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

インストールしたアプリを設定で変更して、新しくインストールしたアプリを含めると、django アプリを介して PHP アプリ データ全体にアクセスできるようになります。Web 上で公開したいデータのビューを作成します。

追加のメモとして、php と django/python を混在させていることを一般に偽装する必要がある場合は、次のように URL パターンを作成できます。

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

これが機能するには、設定も設定する必要があると思いますAPPEND_SLASH=False

ビューは、django ビューを単なる別の php スクリプトとして認識します (より速く、より優雅で、魔法のユニコーンが注入されているだけです)。

PHP を介した Django データへのアクセス

ここでは REST API を使用します。簡単な方法は、ビューで json.dumps(my_dictionary_of_data_for_php) を使用して JSON 応答を作成することであり、よりエンタープライズな方法はTastypieを使用することです。

次に、使用して PHP のデータにアクセスできます。

$fc = file_get_contents('http://yourdomain.com/path/to/django/my_command.php');
$django_data = json_decode(fc);
于 2013-09-29T11:20:27.717 に答える