Size: a a a

2021 February 14

S

Snusmumriken in pro.lua
Александр
Типа
f = file.open(file_name, "w")
f:write(file_data) -- вылетает кернелпаник
Ну, почему кернелпаник? Не влезает?
источник

S

Snusmumriken in pro.lua
Кста, совсем забыл, ещё запись из файлов/в файлы крайне желательно делать чанками:

local f = io.open(filename, "r")
local tcp = socket.connect(host, port)

local chunk = f:read(2048)
while chunk and #chunk > 0 do
 tcp:send(chunk)
 tcp:flush()
 chunk = f:read(2048)
end
tcp:close()

Становится пофигу на размер файла и объём оперативки.
источник

А

Александр in pro.lua
Snusmumriken
Ну, почему кернелпаник? Не влезает?
Хз, но file.putcontents пишет
источник

S

Snusmumriken in pro.lua
Сделай функцию appendfile:

local function appendfile(filename, data)
 local f = io.open(filename, "ab+")
 f:write(data); f:flush()
 f:close()
end
источник

А

Александр in pro.lua
Я тоже уже подумал чанками принимать и писать 🤔
источник

А

Александр in pro.lua
Snusmumriken
Сделай функцию appendfile:

local function appendfile(filename, data)
 local f = io.open(filename, "ab+")
 f:write(data); f:flush()
 f:close()
end
Ну.. это и есть file.putcontents
источник

S

Snusmumriken in pro.lua
Точно?
источник

А

Александр in pro.lua
Snusmumriken
Сделай функцию appendfile:

local function appendfile(filename, data)
 local f = io.open(filename, "ab+")
 f:write(data); f:flush()
 f:close()
end
Ну кроме флеша
источник

А

Александр in pro.lua
Сам такой
источник

S

Snusmumriken in pro.lua
Александр
Я тоже уже подумал чанками принимать и писать 🤔
Судя по твоему ресиверу, там уже идёт запись чанками.
Функция receiver должна вызываться много раз, как раз чанками.
источник

А

Александр in pro.lua
Не 🤔 она раз вызывается
источник

А

Александр in pro.lua
Т.к. tcp:send раз вызывается 🤔
источник

S

Snusmumriken in pro.lua
От количества tcp:send'ов ничего не зависит.
источник

А

Александр in pro.lua
Почему?
источник

S

Snusmumriken in pro.lua
tcp — это поток. Писать в tcp — всё равно что писать в файл на другом компьютере.
источник

S

Snusmumriken in pro.lua
А ещё там есть буферизация и объединение нескольких tcp:send'ов в один, и ещё много чего.
На конечной стороне оно уже может резаться на свои произвольные кусочки.
источник

А

Александр in pro.lua
Но ведь у меня за один раз все приходит
источник

S

Snusmumriken in pro.lua
Значит твои файлы настолько маленькие, что их не чанкует. Чанки обычно по 2048, 4096 и 8192 октета. В общем, в степенях двойки.
источник

А

Александр in pro.lua
А ну да
источник

А

Александр in pro.lua
Snusmumriken
Значит твои файлы настолько маленькие, что их не чанкует. Чанки обычно по 2048, 4096 и 8192 октета. В общем, в степенях двойки.
Раз все чанкуется за меня, то достаточно писать в файл пока все не получу
источник