Задать вопрос

Как совместить Node.JS и PHP?

Сап.
Тема такая: есть некий проект написанный на Node.JS, но написан он был чисто под себя ( не мной, конечно же ), мне хочется подпилить его и поставить на коммерческие рельсы, но для этого нужно дописать пару модулей, а конкретно регистрацию, залогинивание, оплату и другие коммерческие штуки.
Накопился ряд вопросов:
1. Вменяемая ли вообще идея писать модули на PHP на Node.JS проект. Стоит упомянуть, что разбираться в самом Node.JS времени нету, ибо в приоритете скорость разработки.
2. Если можно использовать PHP, то как настроить PHP Storm или другой редактор под две вышеописанные технологии? Как настроить общий сервер, на одном и том же порту?
3. Есть ли вариант использовать Django?

Да и вообще интересно, возможно ли это всё реализовать, хотя бы на костылях, ибо смысла оптимизировать всё раньше времени точно нету.

Спасибо заранее на ваши ответы, если таковые будут присутствовать.
  • Вопрос задан
  • 1113 просмотров
Подписаться 5 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 5
LenovoId
@LenovoId
svg, css,js
php + node.js + Django(python) это три абсолютно разные технологии и не имеющие ни чего общего между собой
вы действительно такой мега крутой кто знает эти три разные технологии ?
1) php - самостоятельный язык программирования
2) node.js - серверный самостоятельный но использует js
3) Django - это фрейворк на основе языка программирования Python

а теперь мой вопрос вам : вы хотя бы имеете 1% знание каждого ЯП из этих ?
Ответ написан
mashletov
@mashletov
Math.random()
Хочу купить трактор. Вопросы
1) Можно ли на тракторе использовать колёса от ВАЗ2109?
2) Если можно использовать колеса от ВАЗ2109, то как сделать так чтобы одно колесо было от лады другое — от трактора.
3) Есть ли вариант использовать пожарную машину?
Ответ написан
Комментировать
У Вас какая-то каша в голове из технологий. И единственный вменяемый способ - это на NodeJS написать HTTP API для Вашего приложения, а потом в PHP обращаться к этому API и добавлять свою логику. То же самое и с Django - он тоже может общаться с API.
Ответ написан
Комментировать
@mr_ko
Javascript, Node.js. React.js, Vue.js, Wordpress
Наверное, едениственно правильный вариант совместить ети технологии будет использование микросервисной архитектуры.
node.js предоставляет API, РНР его дергает и добавляет свою логику.

Ибо, как сказал уже Максим Ленский, это совершенно разные технологии.
Ответ написан
Комментировать
Newto
@Newto
Хоть вопрос и был задан более трёх лет назад, но я таки отвечу, ибо гуглил на днях такую тему и нашёл для себя решение, говоря о связке nodejs+php, может это будет кому-то полезным(а вот питона я не касался).

Есть такая штука как "child_process"; это подключаемый модуль для nodejs. С его помощью можно настроить серверное приложение, написанное на nodejs, таким образом, что оно будет интерпретировать php скрипты и выводить их результат в браузер. Вот мой, краткий, пример, когда я хочу, что бы index.php интерпретировался через nodejs(а точнее отдавал результат работы php скрипта из консольной команды) и отдавал различные данные в зависимости от переданной GET переменной "page":

const express = require('express');
const { exec } = require('child_process');
const app = express();

app.get('/', function (req, res) {

    const page = req.query.page; // Получаем значение параметра 'page' из URL

    if (page) {
        // Если значение параметра 'page' передано, передаем его в php скрипт
        exec(`php index.php ${page}`, (error, phpResult, stderr) => {
            if (error) {
                console.error(`exec error: ${error}`);
                return;
            }
            res.send(phpResult);
        });
    } else {
        exec('php index.php', (error, phpResult, stderr) => {
            if (error) {
                console.error(`exec error: ${error}`);
                return;
            }
            res.send(phpResult);
        });
    }
});

app.listen(4000, function () {
    console.log('App is listening on port 3000!');
});


А в index.php пишем:
print_r($argv);
Где массив argv будет содержать переменную page. Соответственно обрабатывайте её и выводите в браузер что хотите в зависимости от результата.

Таким образом можно "скрестить" php с нодой и творить всякие непотребства. Удачи, дамы и гоcпода! -_^
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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