[英]Calling node.js script from PHP returns nothing
我想要做的事情在理论上很简单,但我无法让它发挥作用。
我写了一个简单的node.js脚本,该脚本使用request
包异步获取一些数据,解析它并将其作为html吐出。 我想将这个脚本集成到我的客户端基于php和apache的网站上,该网站位于共享主机上,并遇到了一些障碍:
node-cgi
包,但它对我不起作用。 我有关于内部节点方法不存在的错误,我认为这个包已经过时了。 所以我已经着手试图简单地从PHP调用节点。 我的整个index.php
文件是:
<?php
header("Content-Type: text/html");
exec("node beerlist.nd", $output);
echo implode('', $output);
当我在命令行上执行php index.php
时,我得到了我期望的输出,但是,当我尝试从浏览器访问它时,我得不到任何Content-Length: 0
,即Content-Length: 0
。 为什么?
我想也许它与我的节点脚本的异步性质有关,但似乎该过程保持活着,直到它完成所有异步调用。 那么我的php片段不应该毫无困难地将输出发送到浏览器吗? 我在这里错过了什么?
编辑:我的节点脚本的要点是
var req = require('request')
req("http://mywebsite.com", function(err, resp, body) {
var output = // pull some interesting pieces out of the whole body
console.log(output);
});
我的output
变量的生成不是这里的问题的核心。 相关部分是我使用request
进行异步调用并使用console.log
输出我的结果......也许这是一个问题?
我想Apache用户不知道什么node
命令。 如果我是正确的尝试写在PHP文件中:
<full path to node> beerlist.nd
代替
node beerlist.nd
获取节点在终端which node
运行的完整路径
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.