在PHP中执行Python脚本并在两者之间交换数据

2022-08-30 15:04:45

是否可以在PHP中运行Python脚本并相互传输变量?

我有一个类,它以某种全球方式抓取网站以获取数据。我想让它变得更加具体,并且已经有特定于几个网站的python脚本。

我正在寻找一种方法将这些内容纳入我的课堂。

两者之间安全可靠的数据传输是否可行?如果是这样,让这样的事情继续下去有多困难?


答案 1

通常,您可以通过使用公共语言格式以及使用和传达数据来在语言之间进行通信。stdinstdout

PHP/Python 示例使用 shell 参数通过 JSON 发送初始数据

菲律宾比索:

// This is the data you want to pass to Python
$data = array('as', 'df', 'gh');

// Execute the python script with the JSON data
$result = shell_exec('python /path/to/myScript.py ' . escapeshellarg(json_encode($data)));

// Decode the result
$resultData = json_decode($result, true);

// This will contain: array('status' => 'Yes!')
var_dump($resultData);

蟒:

import sys, json

# Load the data that PHP sent us
try:
    data = json.loads(sys.argv[1])
except:
    print "ERROR"
    sys.exit(1)

# Generate some data to send to PHP
result = {'status': 'Yes!'}

# Send it to stdout (to PHP)
print json.dumps(result)

答案 2

您正在寻找“进程间通信”(IPC) - 您可以使用类似XML-RPC的东西,它基本上允许您在远程进程中调用函数,并处理语言之间所有参数数据类型的转换(因此您可以从Python调用PHP函数,反之亦然 - 只要参数是受支持的类型。)

Python有一个内置的XML-RPC服务器和一个客户端

phpxmlrpc 库同时具有客户端和服务器

Python服务器和客户端以及PHP客户端服务器的示例


推荐