Node.js работает вместе с Apache PHP?
Я пытаюсь развернуть node.js...
Я очень доволен своей настройкой LAMP, поскольку она в настоящее время выполняет мои требования. Хотя я хочу добавить некоторые функции реального времени в свое приложение PHP. Например, показ всех пользователей, которые вошли в мой сайт и возможности чата.
Я не хочу заменять свой PHP-сервер, но мне нужны масштабируемые решения в режиме реального времени.
1. Могу ли я переместить node.js в микс, чтобы удовлетворить мои потребности, не перестраивая всю серверную часть приложения script?
2. Как лучше всего node.js обслуживать мои функции "chat" и "в настоящее время вошедшие"?
Отлично слышать ваши взгляды!
Ш.
Ответы
Ответ 1
Я предлагаю вам использовать Socket.io на стороне node.js. Установите и загрузите библиотеки из http://socket.io/. Вы можете запустить его вместе с сервером Apache без проблем.
Сначала создайте сервер node:
var http = require('http')
, url = require('url')
, fs = require('fs')
, io = require('../')//path to your socket.io lib
, sys = require(process.binding('natives').util ? 'util' : 'sys')
, server;
server = http.createServer(function(req, res){
var path = url.parse(req.url).pathname;
}),
server.listen(8084);//This could be almost any port number
Во-вторых, запустите свой сервер из командной строки, используя:
node /path/to/your/server.js
В-третьих, подключитесь к сокету с помощью клиентской стороны js:
var socket = new io.Socket(null, {port: 8084, rememberTransport: false});
socket.connect();
Кроме того, вы должны будете включить клиентскую сторону socket.io lib.
Отправлять данные с клиентской стороны на сервер node, используя:
socket.send({data:data});
На сервере server.js также должны быть функции для обработки запросов:
io.on('connection', function(client){
//action when client connets
client.on('message', function(message){
//action when client sends msg
});
client.on('disconnect', function(){
//action when client disconnects
});
});
Существует два основных способа отправки данных с сервера клиенту:
client.send({ data: data});//sends it back to the client making the request
и
client.broadcast({ data: data});//sends it too every client connected to the server
Ответ 2
Я подозреваю, что чат, а также зарегистрированный листинг будет работать через Ajax.
Чату можно было бы легко запрограммировать в Node.js, использовать один из mysql modules для Node для подключения в вашу существующую базу данных и информацию для входа в систему и т.д., а затем выполните все фактические беседы через Node.js, я рекомендую вам проверить Socket.io, так как это делает обход браузера / Node.js действительно тривиальным, это должно позволить вам сосредоточиться на фактической логике чата.
Кроме того, вы можете взглянуть на официальную демонстрацию чата Node.js для некоторого вдохновения.
Что касается текущей онлайн-части, это никогда не бывает легко реализовать, поскольку все, что вы можете сделать, это показать что-то в строке "5 пользователей, активных за последние X минут".
Конечно, вы можете легко добавить Ajax, который запрашивает сервер чата и отображает список пользователей, который находится на главной странице.
Или вы полностью сумасшедшие и устанавливаете соединение Socket.io для каждого посетителя и контролируете его таким образом, хотя сомнительно, стоит ли это делать.
Ответ 3
Как насчет использования файла сокета
точно так же, как педро с ngnx?
http://nodetuts.com/tutorials/25-nginx-and-nodejs.html
Ответ 4
Вы можете запустить php из node js, используя node -php: https://github.com/mkschreder/siteboot_php
Ответ 5
Я запускаю сервер wss (secure websocket) рядом с настройкой LAMP.
Node.js может легко запускаться вместе с любым другим веб-сервером (apache), который вы хотите. В примере @KitCarrau он позволяет node запускать на порт 8084 - там, где он работает и слушает, а не 80 или 443 и т.д. (Обычно это делается апачем). Но вы все равно можете использовать один и тот же порт, чтобы также обслуживать http/https (в моем случае просто указывается какая-то conf и общая информация о том, что служба включена).
Начиная с консоли, это не самый лучший способ (удаленно, node останавливается при закрытии консоли).
Я рекомендую взглянуть на Выполнение node как службы
Легко отслеживать журнал в реальном времени (журнал с помощью console.log( "привет" ), в вашем приложении):
tail -f /var/.../SocketServer.log
Пример script (node -server.conf):
author ....
description "node.js server"
# used to be: start on startup
# until we found some mounts weren't ready yet while booting:
start on started mountall
stop on shutdown
# Automatically Respawn:
respawn
respawn limit 99 5
# Max open files are @ 1024 by default. Bit few.
limit nofile 32768 32768
script
# Not sure why $HOME is needed, but we found that it is:
export HOME="/root"
exec node /var/.../SocketServer.js >> /var/www/node/.../SocketServer.log 2>&1
end script
post-start script
# Optionally put a script here that will notifiy you node has (re)started
# /root/bin/hoptoad.sh "node.js has started!"
echo "\n*********\nServer started\n$(date)\n*********" >> /var/.../SocketServer.log
end script