Можно ли на PHP поднять свой HTTP сервер, и надо ли это?
Меня как то начинающий девелопер по Node JS спросил, можно ли на PHP поднять свой сервер, на что я немного смутился и не совсем понял суть вопроса. Я работал всегда в связке PHP + Nginx или PHP + Apache, где второе является веб сервером. Может ли кто-то подсказать, может я что-то не так понял? Почему на ноде подымают свой HTTP сервер, а у PHP все проще, и есть просто Nginx, Apache. (Возможно даже я не прав в этом сравнении), и есть ли возможность у PHP поднять свой веб сервер, и на сколько это надо? Ведь, что Node, что PHP оба серверные языки.
во первых - node не язык, а "программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код)", и включает в себя в том числе сервер.
во вторых - php -S localhost:8000 - пых так тоже умеет )
Twitt, вы путаете мягкое с теплым, в обоих случаях сервер запускается отдельно, в ноде это команда node server, приведенный вами код к запуску сервера никакого отношенияя не имеет.
Когда задают этот вопрос, в первую очередь имеют ввиду режим работы FastCGI. При таком подходе, одного Nginx недостаточно (тут нужно понимать про неблокирующую модель работы nginx). Для этого нужно чтобы само приложение стартовало как часть веб-сервера, написанного на самом PHP (именно загружалось в память один раз, а не на каждый запрос!). Такое реализовано в некоторых проектах, но на PHP не прижилось (пока). А вот во всех остальных языках общего назначения, всегда поднимается сервер самого языка.
p.s. Кто-то может сказать "но ведь fastcgi есть, php уже работает с nginx". На самом деле это эмуляция, реального fastcgi там нет и оно невозможно просто так, php не так то легко загнать в эту модель (внутрь языка вшито слишком много всего, что заточено под одноразовый запуск).
p.s.s Встроенный сервер PHP тоже обманка. Он подходит только для девелопмента и там нет загрузки кода в память. Он также читает код с диска на каждый запрос.