2

現在、PHP スクリプトから Python スクリプトにデータを送信する最善の方法を決定しようとしています。ただし、この件に関する既存の投稿を既に見ているので、読み続けてください。現在、私が読んだ投稿の1つで提案されているように、次のことを行っています。

Example .php
$var1 = 2;
$tmp = exec(/var/www Example.py $var1);
echo "$tmp";

Example.py
import sys
print sys.argv[1]

これは問題なく動作しているようです。それは本当に初期の段階にありますが。最終的に、PHP スクリプトは HTML フォームから生成された妥当な量のデータを送信することになるため、それが最も効率的な送信方法であるかどうか疑問に思いました。

PHP、HTML、および Python スクリプトはRaspberry Pi、有線 LAN 経由でラップトップに接続された で実行されています。

最終的には、TCP/IP 経由で送信される別のデスクトップからさまざまなコマンドを読み取るために TCP/IP を使用する必要があります (これを変更することはできません)。このメソッドを使用して、PHP スクリプトから Python にデータも送信します。

私はこの範囲の言語にまったく慣れていないので、さらに調査できるようにアドバイスを求めているだけです。他のさまざまな投稿を見てきましたが、私がやろうとしていることと一致するものはないようです。

4

3 に答える 3

0

PHP 部分はある種の Web アプリケーションであると想定しています。その場合は、Python スクリプトを CGI スクリプト/エンドポイントとして分離し、それらと通信して、標準の HTTP 要求を使用してデータを送受信します。したがって、Python スクリプトは次のようになります。

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb, json 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
var1 = form.getvalue('var1')

# Process data and possibly and up with complex output
obj = {'one':1, 'two':2}

# Make it output json  
print "Content-type: application/json"
print 
print(json.JSONEncoder().encode(obj))  

そして、次のような php から呼び出します。

// Get cURL resource
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'http://localhost/cgi-bin/example.py?var1=2',
    CURLOPT_USERAGENT => 'My Internal Request'
));
$resp = curl_exec($curl);
curl_close($curl);

これにより、複雑なデータ構造を Python スクリプトに渡し、構造化された応答 (json) を受け取ることができます。また、アプリの Python 部分をモジュール化し、再利用できるようにします。そして最良の部分は、CGI エンドポイントがあるため、ソケットを使用してそれらと通信できることです。

于 2014-11-16T22:42:38.090 に答える