Twitt
@Twitt

Можно ли на PHP поднять свой HTTP сервер, и надо ли это?

Меня как то начинающий девелопер по Node JS спросил, можно ли на PHP поднять свой сервер, на что я немного смутился и не совсем понял суть вопроса. Я работал всегда в связке PHP + Nginx или PHP + Apache, где второе является веб сервером. Может ли кто-то подсказать, может я что-то не так понял? Почему на ноде подымают свой HTTP сервер, а у PHP все проще, и есть просто Nginx, Apache. (Возможно даже я не прав в этом сравнении), и есть ли возможность у PHP поднять свой веб сервер, и на сколько это надо? Ведь, что Node, что PHP оба серверные языки.
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 6
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
во первых - node не язык, а "программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код)", и включает в себя в том числе сервер.
во вторых - php -S localhost:8000 - пых так тоже умеет )
Ответ написан
riky
@riky
Symfony / Laravel
можно, например
https://reactphp.org/ - в шапке как раз тот пример
https://www.swoole.co.uk/ - на главной тоже есть пример сервера
Ответ написан
l3ftoverz
@l3ftoverz
Туды сюды
В первую очередь, Node - не язык.

Почему на ноде подымают свой HTTP сервер
Это какой? Node.js из коробки имеет возможности для реализации HTTP сервера, правда их не используют обычно, используют удобные абстракции над ними.

Почему на ноде подымают свой HTTP сервер
Я тоже не понял, да, на PHP можно поднять веб-сервер, хоть на встроеном в PHP, хоть с nginx, apache, etc.

Почему на ноде подымают свой HTTP сервер, а у PHP все проще, и есть просто Nginx, Apache.
Прочите эту фразу и подумайте, где всё же "проще".

У PHP и Node.js совем разные модели работы, не понятно, зачем сравнивать гвоздь с палкой.
Ответ написан
toxicmt
@toxicmt
CTO at hexlet.io
Когда задают этот вопрос, в первую очередь имеют ввиду режим работы FastCGI. При таком подходе, одного Nginx недостаточно (тут нужно понимать про неблокирующую модель работы nginx). Для этого нужно чтобы само приложение стартовало как часть веб-сервера, написанного на самом PHP (именно загружалось в память один раз, а не на каждый запрос!). Такое реализовано в некоторых проектах, но на PHP не прижилось (пока). А вот во всех остальных языках общего назначения, всегда поднимается сервер самого языка.

p.s. Кто-то может сказать "но ведь fastcgi есть, php уже работает с nginx". На самом деле это эмуляция, реального fastcgi там нет и оно невозможно просто так, php не так то легко загнать в эту модель (внутрь языка вшито слишком много всего, что заточено под одноразовый запуск).

p.s.s Встроенный сервер PHP тоже обманка. Он подходит только для девелопмента и там нет загрузки кода в память. Он также читает код с диска на каждый запрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы