如何在php和python之间建立连续的连接

时间:2013-03-17 23:51:31

标签: php python

我想做一个实时的应用程序。所以这是场景 - 我有数据通过我的一个COM端口进入我的计算机,然后由python获取并显示。为此我只使用了一个简单的python serial模块,它通过串口读取数据并显示它。

现在这个数据对我来说是本地的。出于高端目的,我需要将这些数据发布到我的一个在线网站上,该网站运行 apache 网络服务器,这将在全球范围内显示数据。

因此,对于实时,我需要持续监控串口,获取数据,并将其连续发布到Web服务器(PHP端)。 (读取串行数据并将其发布到服务器并行运行)。

现在的问题是 -

  1. 如何监控来自COM端口并行的数据并将其发布到网络服务器?

  2. 如果我连续发送数据,网络服务器如何知道数据是否连续?对于这种方法,我想将数据保存到webserver的数据库中,并使PHP脚本能够持续监视数据库。如果你有

  3. ,请告诉我一个更好的方法

2 个答案:

答案 0 :(得分:0)

在Python方面,最简单的方法是使用两个线程。线程1将从串行线读取阻塞调用,并将其读取的所有数据放入thread-safe queue。线程2将抓取队列中的任何内容,将其发布到远程PHP,(重试直到成功),睡眠2秒并重复。

从Python调用的PHP脚本只需将数据插入数据库即可。前端PHP脚本将从数据库中获取数据并显示它。

答案 1 :(得分:0)

通常,当处理在一个接口上接收并在另一个接口上发送的实时应用程序时,您将需要一些线程和至少几个队列。
如果您希望您的程序是事件驱动的(强烈推荐!),您还应该包括在收到输入时触发的事件。

对于你的问题我建议:

用于COM读取的1个线程
1个用于COM编写的线程(如果需要编写)
1个用于PHP写作的线程
1个PHP读取线程(如果需要阅读)
1 COM输入队列
1个COM输入事件

每次在com端口上收到一些数据时,你都会将COM读取线程写入COM输入队列,如果你愿意,可以在将这些数据放入队列之前对其进行验证。

然后COM输入队列将COM输入事件设置为true,这将充当PHP写入队列的“停止”。

然后,PHP队列将遍历已添加到COM输入队列的所有内容,直到它为空,将COM输入事件设置为false,并在再次循环之前等待更多输入。

确保Queue是线程安全的,或者在它周围放置一个互斥锁,这里有几个可以帮助你的东西的链接:

Python Lock
 Python Event
 Python Queue


对于Web服务器方面,您应该在向Web服务器发送数据时使用http POST消息,具体取决于您在请求中添加的内容,您可以将数据发送到Web上的脚本服务器将验证,处理和存储它。

不幸的是,我不是这方面的专家,所以我不能给出很多提示。