从 PHP 脚本调用节点

Ama*_*san 6 javascript php node.js

我正在尝试使用以下命令从 PHP 脚本调用节点脚本exec

$output = exec("/usr/bin/node /home/user/nodescript.js");
Run Code Online (Sandbox Code Playgroud)

nodescript.js 是:

var Scraper = require('google-images-scraper');

var keywords = process.argv[2];

var scraper = new Scraper({
    keyword: keywords,
    rlimit: 10, // 10 p second
});
console.log("foo");
scraper.list(10).then(function (res) {
    console.log("bar");
    console.log(res);
});
setTimeout(function () {
    process.exit(1);
}, 20000)
Run Code Online (Sandbox Code Playgroud)

但我收到的是字符串“foo”,而不是“bar”。如果我从命令行运行节点脚本,我会得到“foo”和“bar”。不知何故,我在函数内没有收到任何控制台输出。我究竟做错了什么?

小智 2

首先,你无法直接获取exec命令的输出。您需要按照文档中的方式定义第二个参数。

exec("node yourfile.js", $output); 
echo implode("\n", $output);
Run Code Online (Sandbox Code Playgroud)