Skip to main content
 首页 » 编程设计

python之如何将变量从 PHP 传递到 Python

2025年05月04日19pengyingh

我可以将变量从 .php 脚本传递到 Python 吗?反之亦然?

例如:

//myPHPScript.php  
$hello = 'hello';  
 
//myPythonScript.py 
print(get the result from $hello variable found in myPHPScript.php)  

请您参考如下方法:

取决于您调用 Python 脚本的方式。例如,如果您通过 system() 执行此操作,则可以将其放入参数中:

$hello = 'world'; 
 
$result = shell_exec('/path/to/python /path/to/your/script.py ' . $hello); 

在 Python 中:

import sys 
 
who = sys.argv[1] 
 
print "Hello %s" % who 

现在 PHP 中的 $result 将包含“Hello world”。

一种更高性能的可能性,虽然并非总是可行但值得考虑,是一种“fastcgi 方法”;您的 Python 脚本实际上一直在运行,并在端口 8888 上接受套接字连接(例如使用 HTTPlib)。此时您可以使用 cURL 从 PHP 连接到 http://127.0.0.1:8888并发送以 JSON 编码的结构化数据(因为 Python 有一个 JSON 解码器;我不太确定 PHP 反序列化器),并通过相同的路径返回信息。

从所有意图和目的来看,Python 脚本现在是一种 Web 服务。您还可以在同一个 Web 服务接口(interface)下部署多个不同的脚本,并根据请求中发送的假 URI 选择哪个脚本来响应。

使用这种方法,您需要检查请求之间的状态是否正确隔离,即代表 Peter 请求数据处理不会导致返回属于 Paul 的数据;或者所有正在处理的数据都是不安全的,也就是说,它不需要安全或身份验证。

这种方法的另一个优点是缓存 - python 脚本在 PHP 发出的请求之间保持事件状态,并且可以将相同的答案返回给已知问题,而无需重新计算任何东西,如果这是可行的。有可插入的 Python 缓存框架。

另一个优势是,您可以通过在不同的机器(不一定可以从更广泛的互联网访问)甚至几台不同的机器上部署 Python 服务来轻松扩展这种方法。