繁体   English   中英

从PHP调用node.js脚本不会返回任何内容

[英]Calling node.js script from PHP returns nothing

我想要做的事情在理论上很简单,但我无法让它发挥作用。

我写了一个简单的node.js脚本,该脚本使用request包异步获取一些数据,解析它并将其作为html吐出。 我想将这个脚本集成到我的客户端基于php和apache的网站上,该网站位于共享主机上,并遇到了一些障碍:

  1. 没有mod_proxy,所以我不能简单地通过Apache将我的节点脚本作为服务器和代理运行
  2. 我不想在端口80上运行节点并从节点代理到apache。 对于我需要做的事情来说,这太过分了,并且会给我带来太多麻烦。 众所周知,我的特定共享主机无法保持节点服务器实例的正常运行,而且我无法证明此脚本运行可能导致的停机时间。
  3. 我尝试了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM