我已经通过代理mod安装了Apache服务器的Node.js服务器,它启动正常。当我从控制台调用server.js文件时:node /var/www/project/node/server.js
我收到正在运行的通知消息:"确定,服务器正在运行"
当我进入浏览器并指向server.js http://example.com/node/
时,我获得状态200并且它可以正常工作。
问题是,函数 test 只有在我从控制台启动server.js时才会执行,但是当我从浏览器或通过AJAX调用请求server.js时,那么函数 test 未执行。我注意到通过数据库条目。
非常感谢您的反馈。我的代码如下:
var http=require('http');
var mysql = require('mysql');
var util = require('util');
var url = require('url');
var connection = mysql.createConnection({
host : 'localhost',
user : 'xxx',
password : 'xxx',
database : 'db_test', //mysql database to work with (optional)
});
connection.connect(); //connect to mysql
var server=http.createServer(function(req,res){
res.end('Connected');
});
server.on('listening',function(){
console.log('ok, server is running');
});
server.listen(9000);
function test(){
var s = new Date().getTime();
connection.query('INSERT INTO table_test.emails (email) VALUES ("'+s+'")',function(err, result) {});
}
test();
感谢。
答案 0 :(得分:1)
app.js
中的代码在使用node /var/www/project/node/server.js
启动服务器时运行(与PHP不同,整个文件不为每个请求运行)。您告诉节点侦听端口9000并在收到请求时执行createServer
回调中的任何内容。因此,您需要在test()
回调中调用createServer
来使其正常工作。
var server=http.createServer(function(req,res){
test();
res.end('Connected');
});