Запустить скрипт PHP в Node.js (или CMD)? - PullRequest
0 голосов
/ 09 сентября 2018

По некоторым причинам необходимо запустить небольшую часть моего NodeJS проекта в PHP7 . Я знаю, что могу создать внутренний API, но это увеличит зависимость от сети.

Чтобы решить эту проблему, я обнаружил, что это можно сделать как

php test.php

Как предоставить JSON-ввод для этого PHP-файла , где данные хранятся в переменной JS, а не в файле и получить вывод в другой переменной JS.

function runPHP(jsonString){
    ....what to write here
    ...
    return output_string;
}

Примечание : Пожалуйста, не предлагайте параметры запроса, так как данные слишком велики.

1 Ответ

0 голосов
/ 09 сентября 2018

Я предполагаю, что вы хотите вызвать php scipt из процесса nodejs, отправить несколько аргументов в JSON, получить обратно некоторый JSON и обработать его дальше.

PHP-скрипт:

<?php
// test.php
$stdin = fopen('php://stdin', 'r');

$json = '';

while ($line = fgets($stdin)) {
    $json .= $line;
}

$decoded = \json_decode($json);

$decoded->return_message = 'Hello from PHP';

print \json_encode($decoded);

exit(0);

Сценарий nodejs:

// test.js
function runPHP(jsonString) {
  const spawn = require('child_process').spawn;
  const child = spawn('php', ['test.php']);

  child.stdin.setEncoding('utf-8');
  child.stdout.pipe(process.stdout);

  child.stdin.write(jsonString + '\n');

  child.stdin.end();
}

runPHP('{"message": "hello from js"}');

Это потребует некоторой полировки и обработки ошибок ...

...