从 php 文档运行 node.js 脚本并获取输出

哨兵

我正在尝试从 PHP 运行 node.js 脚本并在 PHP 中获取输出。

我可以让它工作的唯一方法是这个,但它似乎真的很狡猾。

public function test() {
   exec('/usr/bin/node ' . 'test.js', $o);
 
   dd($o);
}
function test() {
   return 'hello world';
}

console.log(test())

实现这一目标的最佳方法是什么?我也需要将参数传递给它,我怀疑这是实现它的方法。

它可能没有任何区别,但我使用的是 Laravel。

索姆利克

从 PHP 运行“程序”有些复杂,尤其是当您需要它与 args 一起运行时。由于参数需要正确转义,因此您必须调用escapeshellarg()以防止传递引号、文件路径(包括空格和以 开头的字符串时出现问题~

我建议使用依赖项 - symfony/process Docs

我知道响应依赖项的链接是不受欢迎的,但是处理可能的参数和/或二进制输出可能很困难,尤其是在 Windows 和/或其他非 posix 系统上。

使用symfony/process,运行node脚本相当简单,因为该节点位于PATH

<?php

// Run the composer autoloader
require_once __DIR__ . '/vendor/autoload.php';

use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;

$process = new Process(['node', 'script.js']);
$process->run();

if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}

echo $process->getOutput();

文档中包含更深入的用法,包括并行运行多个进程

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章