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


How to make a continuous connection between php and python

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

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

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

现在的问题是-

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

  2. 如果我连续发送数据,web服务器如何知道数据是连续的?对于这种方法,我想到将数据保存到web服务器的数据库中,并编写PHP脚本对数据库进行持续监控。如果你有

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

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

对于你的问题,我建议:

1 COM读取线程
1 . COM写线程(如果你需要写的话)
一个PHP编写线程
PHP阅读线程(如果你需要阅读)
COM输入队列
1 COM输入事件

每次COM端口接收到一些数据时,你可以让COM读线程写入COM输入队列,如果你愿意,你可以在将这些数据放入队列之前验证这些数据。

然后COM输入队列将COM输入事件设置为true,这是PHP写队列的'停止'。

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

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


Python锁Python事件
Python Queue


对于web服务器端,你应该使用http POST消息发送数据到web服务器,根据你的请求,你可以发送数据到web服务器上的脚本将验证,处理和存储它。

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

在Python端,最简单的方法是使用两个线程。线程1将使用阻塞调用从串行行读取数据,并将它读取的所有数据放入线程安全队列中。线程2将获取队列上的任何内容,将其发送到远程PHP,(重试直到成功),休眠2秒并重复。

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