2011-02-04 1 views
3

今は、Webサイト/ MySQLからコマンドラインにいくつかの動的変数を渡す必要があるため、exec()を使用してPHPからPythonスクリプトを起動しています。しかし、この作業の速度とセキュリティの両方を改善したいので、WSGIを使用することを考えました。私は、PHPから直接(または間接的に)渡された変数を使用するWSGIファイルにPythonスクリプトを埋め込むことは可能かもしれないと考えていましたが、どうすればいいですか?私はWSGIを使用したことがないので、これが愚かな質問であるかどうかわからない:WSGIを使用してPythonスクリプトを実行してPHP exec()を回避するにはどうすればよいですか?

+1

あなたはApacheの設定(または使用しているWebサーバー)にアクセスできますか? – MeanEYE

+0

はい私は自分の専用サーバーにApacheを持っています。 – Jon

答えて

1

まず、PythonかPHPのどちらでもできますか?複数の言語を使用することは、通常、アンチパターンとみなされます。それはいつも悪い考えではないと言っているわけではありませんが、まず最初になぜ疑問を呈して、それが良いアイデアだと確信している場合にのみ質問してください。

は限り、あなたが何をしたいの仕様として、いくつかのオプションがあります。

  1. にApacheを使用している場合、あなたは、Apacheを通じて新しい要求を発行するvirtual()機能を使用することができます。

    これは、mod_phpとmod_wsgiを使用していることを前提としています。基本的に、あなたが渡したい変数のためのクエリ文字列を構築し、それが好きな呼びたい:

    virtual('path/to/python.py?'.$query); 
    
  2. 独自のPHPのWSGIゲートウェイを書きます。

    WSGI仕様をバスカルにコード化し、ライブラリ内にコード化し、PHP内から明示的に呼び出します。

  3. これをexec()から呼び出すことに固執します(これは今のところ最良の選択肢です)。

考慮すべきことは、言語間のクロスオーバーに固有のオーバーヘッドがあることです。あなたはそれを乗り越えることはありません、それは獣の性質だけです。だから代わりに、私は1つの環境の中に全体の要求を保持し、その環境全体でそれを扱うことをお勧めします...

+0

残念ながら、PHPで利用できないPythonライブラリをいくつか使用していて、PHP全体をPythonに書き直すと、いずれの言語でもあきらめることはできません...努力する価値はないと思います。私はこのオーバーヘッドを減らすためにWSGIを使用するショートカットを望んでいました。 – Jon

+0

お返事ありがとうございました! – Jon

関連する問題