3

我正在使用 php 设置一个 SOAP 服务器。在处理 SOAP 请求时,我需要调用一些现有的 python 脚本。这些脚本通常返回 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()调用将 shell 输出接收到变量$output中,因此它无法从 Python 函数接收返回的字符串。您必须打印它们,而不是返回它们,并且每条打印的行都将进入exec()数组$output

主脚本必须将值打印到标准输出:

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 中轻松解析值的格式,例如每行一个内容,或者您​​可以使用的键:值对explode()

于 2012-07-12T23:11:50.757 回答