170 похожих чатов

Ребят, это действительно так, что если node.js сервер под нагрузкой,

то внутри express route handler ответы для разных запросов могут перезаписаться друг на друга? о_О
Вот оригинал:

Since Node is single-threaded, that means that all your users are going to be sharing the same memory space. In other words, unlike in the browser, you have to be careful not to store user-specific data in closures where other connections can get at it. For this reason, I like to use res.locals to store temporary user data that’s only available during that user’s request/response cycle

12 ответов

23 просмотра

Правда

а откуда инфа?

Vlad-☄️ Автор вопроса

Но как? Разве не смотря на однопоточность, нельзя заранее аллоцировать куски памяти для каждого нового подключения и таким образом решить проблему кросс-доступа к одной и той же ячейке?

Можно, ошибка же будет в твоём коде

Vlad-☄️ Автор вопроса

А, ну если писать и читать переменную в глобал пространстве на каждый реквест - не мудрено, что будет полная ёбань Видимо автор всё-таки, что-то перепутал, вот статья https://medium.com/javascript-scene/introduction-to-node-express-90c431f9e6fd , ищите по словам memory management

Всё правильно он написал you have to be careful not to store user-specific data in closures where other connections can get at it. Если есть переменная из замыкания, то она шарится между запросами

Vlad-☄️ Автор вопроса

но ведь в замыкание route handler другой запрос никак не попадёт… смысл написанного тогда? уходя - гасите свет, тушите огонь водой, не шарьте между разными юзерами один стейт в общем, я понял, что он имел в виду, спасибо за успокоение))

Вот пример кода, https://pastebin.com/JGtUXWPs На 1 запросе в секунду будет всегда 1 На 100 запросах в секунду будет от 1 до 100

Vlad-☄️ Автор вопроса

в этом примере foo находится в глобальном замыкании, к этому вопросов вообще нет его предложение звучало как «не храните внутри замыкания route handler что-то, ведь оно перезапишется на следующий вызов обработчика», поэтому-то я и всех взбаламутил)

Там написано что если ты получаешь через замыкание переменную, то другие функции, которые получают эту же переменную через замыкание, будут работать с теми же данными

Vlad-☄️ Автор вопроса

очевидность этого утверждения затуманила мой рассудок и я второй раз неправильно перевёл предложение))

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта