如何将变量从PHP传递到Python?

Ror*_*ter 1 php python

如何将.PHP脚本中的变量传递给Python,反之亦然?

例如

//myPHPScript.php 
$hello = 'hello'; 

//myPythonScript.py
print(get the result from $hello variable found in myPHPScript.php) 
Run Code Online (Sandbox Code Playgroud)

LSe*_*rni 12

取决于您如何调用Python脚本.system()例如,如果你这样做,你可以把它放在参数中:

$hello = 'world';

$result = shell_exec('/path/to/python /path/to/your/script.py ' . $hello);
Run Code Online (Sandbox Code Playgroud)

在Python中:

import sys

who = sys.argv[1]

print "Hello %s" % who
Run Code Online (Sandbox Code Playgroud)

现在$result在PHP中将包含"Hello world".

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

对于所有意图和目的,Python脚本现在都是一个Web服务.您还可以在同一Web服务接口下部署多个不同的脚本,并根据请求中发送的伪URI选择要回答的脚本.

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

这种方法的另一个优点是缓存 - python脚本在从PHP发出的请求之间保持活跃,并且可以返回已知问题的相同答案,而不需要重新计算任何内容,如果可行的话.有一些Python的缓存框架可以插入.

另一个优点是,您可以通过在不同的计算机上部署Python服务(不一定可以从更广泛的Internet访问)或甚至几台不同的计算机来轻松扩展此方法.