问题描述
有人知道如何发送超过3万个网页数据吗?
我尝试了以下三种方法,但不幸的是,它们都失败了
AsyncWebServerResponse *response = request->beginResponse_P(200,"text/html",index_html);
request->send_P(200,index_html,processor);
AsyncWebServerResponse *response = request->beginResponse_P(200,processor);
即使添加了狗也无效
//---------------------------------------------------------------------------------------
server.on("/tst",HTTP_GET,[](AsyncWebServerRequest * request) {
AsyncResponseStream *response = request->beginResponseStream("text/html");
response->print("Start ********************** ");
for(int lop=0; lop<=1700; lop++){
response->print("<p>");
response->println(lop);
response->print("/<p>");
esp_task_wdt_reset();
}
request->send(response);
//---------------------------------------------------------------------------------------
我尝试了跟踪程序“ request-> send(response);” ,此命令将始终导致WDT错误!
E (48565) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (48565) task_wdt: - async_tcp (cpu 0/1)
E (48565) task_wdt: Tasks currently running:
E (48565) task_wdt: cpu 0: IDLE0
E (48565) task_wdt: cpu 1: IDLE1
E (48565) task_wdt: Aborting.
abort() was called at PC 0x400e431b on core 0
我还使用异常解码器进行检查,结果似乎是由WTD引起的。 // ------------------------------------------------ -------------------------------------------------- ---- 解码堆栈结果
0x4008ce38: invoke_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 155
0x4008d069: abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 170
0x400e431b: task_wdt_isr at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/task_wdt.c line 174
0x40151ccf: esp_pm_impl_waiti at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/pm_esp32.c line 492
0x400e56cb: esp_vApplicationIdleHook at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/freertos_hooks.c line 63
0x4008ad41: prvIdleTask at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c line 3382
0x4008954d: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143
// --------------------------------------------- -------------------------------------------------- -------
在WizNet W5100的LIB上,它可以使用server.println(F("<p>"));
来一次发送数据。发送大量记录数据时,这将具有非常好的优势。
与其立即发送数据并拼凑在一起,不如轻易地导致超时或内存损坏。
ESPAsyncWebServer是否具有类似的方法?还是其他选择?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)