gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:35:33 26 4
gpt4 key购买 nike

我想做的事情在理论上很简单,但我无法完全实现它。

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

  1. 没有 mod_proxy,所以我不能简单地将我的 Node 脚本作为服务器和代理通过 Apache 运行
  2. 我不想在端口 80 上运行 Node 并从 Node 代理到 apache。对于我需要做的事情来说,这太过分了,而且会让我头疼。众所周知,我的特定共享主机在保持 Node 服务器实例正常运行方面存在问题,而且我无法证明可能的停机只是为了运行此脚本。
  3. 我尝试了 node-cgi 包,但它对我不起作用。我收到关于内部 Node 方法不存在的错误,我认为这个包刚刚过时。

所以我所着手的是尝试简单地从 PHP 调用 Node 。我的整个 index.php 文件是:

<?php
header("Content-Type: text/html");
exec("node beerlist.nd", $output);
echo implode('', $output);

当我在命令行上执行 php index.php 时,我得到了预期的输出,但是,当我尝试从浏览器访问它时,我什么也没得到,即 Content-Length : 0。为什么?

我认为这可能与我的 Node 脚本的异步性质有关,但似乎该进程在完成所有异步调用之前一直保持事件状态。那么我的 php 代码片段不应该毫无问题地将输出发送到浏览器吗?我在这里缺少什么?

编辑:我的 Node 脚本的要点是

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中获取 Node 运行的完整路径

关于javascript - 从 PHP 调用 node.js 脚本不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com