自動更新機能を備えたLua Webサーバーをテストしています。 HTMLコードは毎秒Webサーバー自体にリダイレクトされています。したがって、クライアントのWebブラウザは、ブラウザのキャッシュを使用して、 の代わりに常に新しいデータをサーバから取得します。NodeMCU自動更新機能付き超小型Webサーバーでメモリ不足になる
このメッセージで、私はいくつかの時間後でも、1つのクライアントのみ(私のPCまたはスマートフォン)で接続した場合NodeMCUボードのクラッシュ:
PANIC:LuaのAPIへの呼び出しで保護されていないエラー(SO-WEBSRV -Test.lua:27:メモリのうち)
私はquestion「メモリ不足」と類似に答えマルセルStoerから、このコードを使用していました。
私はMarcelのLuaコードを修正しましたが、このコードはまだ時間の経過とともにすべてのヒープメモリを使い果たします。
私は少し問題を絞りました.HTMLコードのリフレッシュ頻度が30秒未満の場合、コードはヒープメモリを使い果たします。
したがって、一定のヒープメモリ使用量を達成するには、このコードをどのように変更する必要がありますか?
よろしくお願いいたします。
ステファン
tmr.alarm(0, 1000, 1, function()
if wifi.sta.getip() == nil then
print("trying to connect to AccessPoint...")
else
own_ip, netmask, gateway=wifi.sta.getip()
print("connected to AccessPoint:")
print("IP Info: \nIP Address of this device: ",own_ip)
print("Netmask: ",netmask)
print("Gateway Addr: ",gateway,"\n")
print("type IP-Address "..own_ip.." into your browser to display SHT-31-website")
tmr.stop(0)
end
end)
counter = 0
srv = net.createServer(net.TCP, 28800)
print("Server created... \n")
srv:listen(80, function(conn)
conn:on("receive", function(sck, request)
local message = {}
counter = counter + 1
message[#message + 1] = "<head> <meta http-equiv=refresh content=1; URL=http://"..own_ip.."> </head>"
message[#message + 1] = "<h1> ESP8266 SHT-31 Web Server Ver 003</h1>"
message[#message + 1] = "<h2>some more text blabla blub"..counter.."</h2>"
local function send(sk)
if #message > 0 then
sk:send(table.remove(message, 1))
else
sk:close()
message = nil
print("Heap Available:" .. node.heap())
end
end
sck:on("sent", send)
send(sck)
end)
end)
根本原因が何であるか考えています。しかし、まずは説明の中の履歴を削除し、あなたが現在作業している(そしてAFAIUに失敗した)コードが何であるかを説明することをお勧めします。 –