2

我目前正在尝试确定将数据从 PHP 脚本发送到 Python 脚本的最佳方式。但是请继续阅读,因为我已经查看了有关该主题的现有帖子。目前,我正在按照我读过的一篇文章的建议执行以下操作:

Example .php
$var1 = 2;
$tmp = exec(/var/www Example.py $var1);
echo "$tmp";

Example.py
import sys
print sys.argv[1]

这似乎工作正常。虽然它还处于早期阶段。最终,PHP 脚本将发送从 HTML 表单生成的合理数量的数据,所以我想知道它是否是最有效的发送方式。

PHP、HTML 和 Python 脚本在Raspberry Pi通过有线 LAN 连接到笔记本电脑的计算机上运行。

最终,我将不得不使用 TCP/IP 从另一个桌面读取各种命令,这些命令将通过 TCP/IP 发送出去(我无法更改)所以我想知道现在初始化套接字是否更好,然后使用此方法还将数据从 PHP 脚本发送到 Python。

我对这一系列语言很陌生,所以我只是在寻找建议,以便我可以进一步调查。我查看了其他各种帖子,但似乎没有一个与我正在尝试做的事情相匹配。

4

3 回答 3

0

试试ZeroMQ

ØMQ(也称为 ZeroMQ、0MQ 或 zmq)看起来像一个可嵌入的网络库,但其行为却像一个并发框架。它为您提供跨各种传输(如进程内、进程间、TCP 和多播)传输原子消息的套接字。您可以使用扇出、发布-订阅、任务分发和请求-回复等模式连接 N 对 N 套接字。它的速度足以成为集群产品的结构。它的异步 I/O 模型为您提供可扩展的多核应用程序,构建为异步消息处理任务。它有许多语言 API,可以在大多数操作系统上运行。ØMQ 来自 iMatix,是 LGPLv3 开源的。

nanomsg(zeromq 作者的新项目)

nanomsg 是一个套接字库,它提供了几种常见的通信模式。它旨在使网络层快速、可扩展且易于使用。它以 C 语言实现,可在广泛的操作系统上运行,无需进一步依赖。

与示例类似的问题:Sending data to Python Script from PHP

于 2013-12-07T14:25:34.843 回答
0

您可以使用像Gearman这样的排队服务,在 PHP 中使用客户端,在 Python 中使用工作者,反之亦然。

有人在这里创建了一个示例设置。

https://github.com/dbaltas/gearman-python-worker

于 2014-06-19T04:53:52.697 回答
0

我假设 PHP 部分是某种 Web 应用程序。如果是这种情况,我会将 python 脚本隔离为 CGI 脚本/端点并与它们通信,使用标准 HTTP 请求传递和接收数据。所以你的 Python 脚本会变成:

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb, json 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
var1 = form.getvalue('var1')

# Process data and possibly and up with complex output
obj = {'one':1, 'two':2}

# Make it output json  
print "Content-type: application/json"
print 
print(json.JSONEncoder().encode(obj))  

你从 php 调用类似:

// Get cURL resource
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'http://localhost/cgi-bin/example.py?var1=2',
    CURLOPT_USERAGENT => 'My Internal Request'
));
$resp = curl_exec($curl);
curl_close($curl);

这将允许您将复杂的数据结构传递给 python 脚本并接收结构化响应 (json)。它还将模块化您应用程序的 python 部分并允许重用。最好的部分是您拥有 CGI 端点,因此您也可以使用套接字与它们进行通信。

于 2014-11-16T22:42:38.090 回答