【问题标题】:I am reading a stream of bytes from server using esp8266 by running a .php script on the server but i do not get the correct data我正在使用 esp8266 通过在服务器上运行 .php 脚本从服务器读取字节流,但我没有得到正确的数据
【发布时间】:2020-06-06 03:25:48
【问题描述】:

这是从服务器发送/接收的 GET 请求和响应

连接到 MD1 ………… 已连接 WiFi IP地址: 192.168.43.135 连接到 smbbitumen.com 请求网址:http://www.smbbitumen.com/smbbitumen.com/myftp/API/Users/read.php HTTP/1.1 200 正常 日期:2020 年 6 月 6 日星期六 03:00:17 GMT 服务器:nginx/1.17.9 内容类型:文本/html X-Powered-By: PHP/5.4.45 变化:接受编码 接受范围:无 X-服务器缓存:真 X-代理缓存:MISS 传输编码:分块

48 1111000019:30:0020:30:0019:40:0020:40:0019:45:0020:45:0019:50:0020:50:00 0

关闭连接


1111000019:30:0020:30:0019:40:0020:40:0019:45:0020:45:0019:50:0020:50:00 -> 这是我正在读入 esp 的数据流但它不会实时更新,它保持不变。任何想法,嘿,这正在发生......

还有一件事,当我在浏览器中运行上面的 php 链接时,每次它都会返回正确的数据。


我用来读取数据的php脚本

<?php
clearstatcache();
$myfile = fopen("TEST.txt", "r");
if($myFile === FALSE)
    echo "ERROR";
else
    echo fread($myfile,filesize("TEST.txt"));
fclose($myfile);
?>

ESP8266 代码,用于连接服务器并使用 GET 请求运行上述脚本

   #include <NTPClient.h>
   #include <WiFiUdp.h>
   #include <ESP8266WiFi.h>
   #include <WiFiClient.h>
   #include <ESP8266WebServer.h>
   #include <WiFiClientSecure.h> 
   #include <Ticker.h>
   #include <EEPROM.h>
   #include <ESP8266HTTPClient.h>
   #include<ESP8266WiFiMulti.h>


   const char *ssid = "***";
   const char *password = "******";
   HTTPClient myhttp;


    void setup()
    {
        Serial.begin(115200);
        WiFi.begin(ssid,password);

        while(WiFi.status()!= WL_CONNECTED)
        {
            delay(1000);
            Serial.println("Connecting...");
        }
     }

    void loop()
    {
      if(WiFi.status() == WL_CONNECTED)
      {
  myhttp.begin("http://www.smbbitumen.com/smbbitumen.com/myftp/API/Users/read.php");
       int httpCode = myhttp.GET();

       if(httpCode > 0)
       {
          String payload = myhttp.getString();
          Serial.println(myhttp.getString());

       }
         httpCode = 0;
         myhttp.end();
      }
        delay(2000);
    } 

【问题讨论】:

  • @Juraj。它早些时候运行良好,但这个问题仅在两周前开始发生。
  • @Makyen 很抱歉提供的信息不完整,我已经更新了代码。将等待输入....似乎是缓存问题,但需要您的建议。
  • @Makyen - 我已经上传*代码
  • @Makyen 将 C 添加到 Question(s) 标签
  • 我还是不明白是什么问题。顺便提一句。 Arduino 是 C++,但最好用 [arduino] 标记

标签: php html c arduino esp8266


【解决方案1】:

问题与缓存有关。修改 read.php 中的代码如下

<?php
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
clearstatcache();
$myfile = fopen("TEST.txt", "r");
if($myFile === FALSE)
    echo "ERROR";
else
    echo fread($myfile,filesize("TEST.txt"));
fclose($myfile);
clearstatcache();

?>

可以通过更改服务器上的缓存设置来完成类似的事情。

【讨论】:

  • 你认为 OP 在服务器上有缓存吗?因为MCU没有缓存
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多