Здравствуйте!
Стал изучать nodejs, до этого из серверных ЯП работал только с PHP и немного с Python.
Работают эти технологии немного по-разному, но я не уверен, что я все правильно понимаю. Я объясню на пальцах, как я понял их работу, а вы, пожалуйста поправьте, если я ошибаюсь.
Так вот PHP и Python работают одинаково: приходит запрос и веб-сервер передает исполнение запроса обработчику ЯП.
То есть такой скрипт:
i = 1;
print(i);
i++;
Выведет и в PHP и в Python 1. Он (скрипт) каждый раз будет запускаться заново, как будто в первый раз. И, получается, что в этом случае оба этих языка
созданы, чтобы умирать?
В nodejs, в отличие от вышеперечисленных языков запускается что-то вроде бесконечного цикла, и все входящие запросы попадают в него и обрабатываются. И псевдокод выше будет выглядеть так:
i = 1;
server.on('connection', () => {
print(i);
i++;
});
И выводить он будет всем разные цифры.
То есть nodejs специально сделан для именно такой модели работы. Для работы с "сохранением состояния".
Теоретически, можно и PHP заставить работать как nodejs, примерно так:
$i = 1;
while (true) {
$data = getData();//Каким-то образом принимать данные извне
send(i);
$++;
}
И запустить в виде демона.
Но тут проблемно организовать взаимодействие с этим демоном извне (и возможно ли это сделать? как?).
Итог: php и python выполняются и "умирают", а nodejs "живет", пока его не перезапустить или не сломать. Тут у меня еще вопрос: А как работают другие ЯП? Например java на сервере или go? Какая у них модель работы?
Буду очень признателен за развернутые ответы.
Спасибо!