3

phpを使用してSOAPサーバーをセットアップしています。次に、SOAPリクエストを処理する際に、既存のPythonスクリプトを呼び出す必要があります。これらのスクリプトは通常、成功、説明、データの3つの値を返します。

3つの値すべてをphpに戻すにはどうすればよいですか?

私のリクエストは:

exec('python test.py', $output);

test.pyは:

from getData import getData

status, description, data = getData()

return status, description, data

私の既存のPythonは次のようになります。

def getData():
    database = Database()

    # get all the Data from the db
    data = database.getData()

    if data is None:
        return False, "...notes...", ""

    return True, "...notes...", data

test.pyの戻り値が正しいかどうかわかりません。しかし、そうだとしても、var_dump($ output)を見ると、「配列」しか見えません。

誰かアイデアはありますか?

TIA、

ブライアン

4

1 に答える 1

5

exec()呼び出しは変数へのシェル出力を受け取るため$output、Python関数から返された文字列を受け取る方法がありません。それらを返す代わりに、それらを印刷する必要があり、印刷された各行はexec()配列に入り$outputます。

メインスクリプトは、値をstdoutに出力する必要があります。

from getData import getData
status, description, data = getData()

# Print the values
print("STATUS:", status)
print("DESCRIPTION:", description)
print("DATA:", data)

PHPで、返される出力を調べます。

exec("python test.py", $output);
var_dump($output);

printPythonのステートメントを、PHPの値を簡単に解析できるものにフォーマットする必要があります。たとえば、1行に1つ、またはキー:可能な値のペアですexplode()

于 2012-07-12T23:11:50.757 に答える