[英]Getting PHP from node.js
我正在使用node.js的连接功能来连续长时间轮询php脚本,我想知道是否有人知道在node.js中链接到php的背后想法(甚至是代码示例)? 我以为我需要一个新的客户端,我向php页添加了一个请求,然后添加了一个响应事件侦听器,然后触发了一个事件函数,该函数捕获返回的数据并将其扔回到服务器函数中。
但是,我是一个菜鸟,需要一些初步指导,因为他们的api文档不是最容易阅读的; 英文太罗word了,在深色背景上是白色字体...不好。
谢谢,
var sys = require('sys'),
http = require('http'),
url = require("url"),
path = require("path"),
events = require("events");
var twitter_client = http.createClient(80, "192.168.23.128");
var tweet_emitter = new events.EventEmitter();
function get_tweets() {
var request = twitter_client.request("GET", "/?url=ajax/session", {"host": "192.168.23.128"});
request.addListener("response", function(response) {
var body = "";
response.addListener("data", function(data) {
body += data;
});
response.addListener("end", function() {
sys.puts(body);
var tweets = JSON.parse(body);
if(tweets.length > 0) {
tweet_emitter.emit("tweets", tweets);
}
});
});
request.end();
}
setInterval(get_tweets, 5000);
http.createServer(function (req, res) {
sys.puts("accessed Server");
res.writeHead(200, {'Content-Type': 'text/plain', "Access-Control-Allow-Origin": "*"});
var t = JSON.stringify({id:"test"});
var listener = tweet_emitter.addListener("tweets", function(tweets) {
res.write(tweets);
});
res.write(t);
res.end();
}).listen(8124);
sys.puts('Server running at http://127.0.0.1:8124/');
这似乎有效。 取自其他教程的混合
只是在对此主题进行一些研究,并想为任何可能希望做同样事情的人提供答案。
关于OP的评论很好地指出了这种事情是否会有效利用资源,或者浪费节点基于事件的处理能力。 我要说的是,将请求传递到Apache / PHP服务器上效率很低,因为您执行的操作基本上与将重复的AJAX请求发送到Apache服务器相同。 唯一的区别是您现在有一个中间人发送请求。
Apache仍然像以前一样提供请求,它只是将请求提供给Node.js服务器而不是客户端。 除了减轻客户端的负载并将其放置在服务器上之外,这没有任何效率。
如@Paul所述,正确的方法是使用某种PHP处理器,该处理器将允许您绕过Apache。 有一些使用FastCGI和PHP-FPM完成此操作的奇特方法-它们相当高级,因此您可能很难自行将它们集成到Node.js中。
从好的方面来说,已经有一个节点模块可以做到这一点: node-php 。 它还很年轻(“ Omega-alpha-super-beta-proof-of-concept”概念),但也许能够处理您要尝试执行的操作。 如果不能,至少这是一个很好的起点,您可以分叉进行自己的补充
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.