使用PHP和Nodejs的社交网络


Social network with PHP and Nodejs

待办事项

我试图实现的是一个混合服务器来运行和处理我的社交网络网站的需求。

Build

我在PHP上创建了所有这些,数据库是MySql,为了实时更新,我使用了AJAX短轮询,它每"x"秒检查一次新消息。但我不希望复查之间有时间间隔,这就是我决定使用长轮询的原因。它是通过Node.js+Socket.io.实现的

问题

  1. "NodeApp"构建完成后,我将在我的网站上进行组合,该网站正在使用apache。我怎样才能将两者结合在一起?例如:页面为:

    • example.com/home.php#Apache
    • example.com/profile.php#Apache
    • example.com/messages#Node.js
  2. 我如何按原样加载我的php页面以及其间的消息,这些消息是用node.js编写的,以便像FB一样进行实时更新。(使用websocket,然后返回到支持的任何内容,这是使用[socket.io]完成的)一个小概述:http://postimg.org/image/p3vq4tkvr/

我知道的事情

  1. 我可以在节点中使用http代理来使用相同的URL,但使用不同的端口
  2. 我可以使用两个带VPN的专用ip,一个用于apache,一个适用于Node.js
  3. 我不想在两者之间使用iFrame
  4. 我不想使用不同的端口,比如www.example.com:3000用于node,www.example.com用于apache

现在做的差不多。我会和你分享我的经验。它可能派上用场。我们已经准备好了phpFox的社交网络引擎。决定使用Node.js(用作传输套接字.io)来"增加"部分个人消息的趣味性。

从一开始,PHP(phpFox)与Node.js的连接就出现了问题。该模块允许您使用TCP协议在虚拟服务器之间发送数据(许多流行的编程语言都有驱动程序dNode)

下一个问题是数据库。最初,我们使用MySQL和一个表列表(用于邮件):

mail | mail_text | user | user_info

一些测试表明,将MySQL与node.js结合使用是不合理的。出于这个原因,决定将"Dialogues"(写在node.js上的个人消息的代码名)用于非关系数据库MongoDB。该脚本是由Python编写的(可以使用和PHP,但对于这样的任务,我更喜欢使用Python-脚本的最佳性能和执行速度),"peregenal"MySQL数据库到MongoDB,创建了这样一个方案:

messages | dialogs | texts

唯一对话框的集合是存储的消息:

dialog_id | owner_user_id | viewer_user_id | last_message | some_info

然后一切都清楚了:

  1. 当您在http://site.com/mail/dNode的帮助下打开页面时,PHP会在node.js侧传递user_id
  2. 当node.js得到user_id时,他将所有"对话框"与"对话框"集合一起拉出,并绘制主页面
  3. 当用户打开与用户(例如John)的对话时,会打开一个页面,其中包含他们的通信http://site.com/mail/{John user_id}
  4. socket.io是实时对话

就是这样。我希望我的经验能对你有所帮助:)

祝你好运!