Php 从4G模块向服务器发送连续数据

Php 从4G模块向服务器发送连续数据,php,server,gsm,continuous,4g,Php,Server,Gsm,Continuous,4g,我将Telit LE910 4G LTE模块连接到Teensy板(Arduino可以)。虽然我能够使用HTTP请求(POST和GET)将数据发送到我的PHP服务器,但由于服务器响应所需的延迟,我无法发送连续数据: [...] // SOCKET DIAL LTESerial.print("AT#SD=1,0,80,\"SERVER IP\"\r\n"); delay(5000); // POST LTESerial.print("POST /server/index.p

我将Telit LE910 4G LTE模块连接到Teensy板(Arduino可以)。虽然我能够使用HTTP请求(POST和GET)将数据发送到我的PHP服务器,但由于服务器响应所需的延迟,我无法发送连续数据:

  [...]
  // SOCKET DIAL
  LTESerial.print("AT#SD=1,0,80,\"SERVER IP\"\r\n");
  delay(5000);

  // POST
  LTESerial.print("POST /server/index.php?data=");
  LTESerial.print(random(1000));
  LTESerial.print(" HTTP/1.1\r\n");
  LTESerial.print("Host: SERVER IP\r\n\r\n");  
  delay(5000);
  while (getResponse() > 0);
这只是一个例子(写在这里),但它多少说明了我在做什么。上面的代码应该放在while循环中,这样一旦数据上传到服务器上的.txt文件,模块就会重新连接到服务器并发布另一个数据点

显然,我希望避免这些延迟,并尽可能快地(在数据可用时)将数据解析到服务器。这就是我选择4G LTE版本的原因

调整延迟可能会给我额外的一秒钟左右,但我的项目包括“实时”绘制大量数据点,因此它对时间非常敏感

你知道如何在4G上向服务器发送连续数据流吗?我正在考虑缓冲一些数据点,并使用FTP上载数据,但我认为将文件上载到服务器可能需要比现在更多的时间


非常感谢您的帮助

听起来您的用例可能更适合于一种特殊的物联网协议,而不是像HTTP这样更面向客户机-服务器连接的协议

物联网世界中使用了几种协议,但最常见的有:

  • MQTT-
  • COAP-
  • XMPP-
这不仅可以解决您的延迟问题,而且通常还可以将数据开销和处理/电池使用降至最低

您还应该能够找到这些的PHP示例—例如MQTT的一个示例:


我使用上面的一些现有代码使它能够工作,但它仍然不是最优的。这可能对其他人有用

这就是我所做的:

1) I套接字拨号仅一次(初始化期间)

2) POST部分无限地在一个循环中运行。5秒延迟现在减少到200毫秒,我添加了一些标题,如下所示:

  //unsigned long data = random(1000000000000000, 9999999999999999);
  LTESerial.print("POST /index.php?data=");
  LTESerial.print(data);
  LTESerial.print(" HTTP/1.1\r\n");
  LTESerial.print("Host: ADDRESS\r\n");
  LTESerial.print("Connection: keep-alive\r\n\r\n");
  delay(200);
  while (getResponse() > 0);
3) 事实证明,我的WAMP服务器(PHP)在最大HTTP请求、超时等方面有默认限制。我必须在
php.ini
中增加这些数字(我将其更改为无限)

然而,虽然我能够“连续”地向服务器发送数据,但200毫秒的延迟仍然很大。如果可能的话,我想看一些接近串行通信的东西

此外,当查看串行监视器时,我得到:

[...]
408295030
4238727231
3091191349
2815507344

----------->(THEN SUDDENLY)<------------

HTTP/1.1 200 OK
Date: Thu, 02 Jun 2

2900442411

016 19:29:41 GMT
Server: Apache/2.4.17 (Win32) PHP/5.6.15
X-P16

3817418772

Keep-Alive: timeout=5
Connection: Keep-Alive
Content-Type: te

86026031

HTTP/1.1 200 OK
Date: Thu, 02 Jun 2016 19:29:4

3139838298
75272508
[...]

----------->(After 330 iterations/POSTs, I get)<------------

NO CARRIER
NO CARRIER
NO CARRIER
NO CARRIER
[…]
408295030
4238727231
3091191349
2815507344

----------->(然后突然)(经过330次迭代/发布后,我得到)由于限制,我想继续使用HTTP。在任何情况下,我都可以完全访问WAMP上的私有服务器,这意味着我应该能够启动一个“套接字侦听器”,将4G模块定向到此侦听器,并无休止地传输数据。我用PHP尝试过这个方法,但仍然会遇到这些延迟。有没有办法让套接字拨号保持活动状态并继续发送POST请求?