使用PHP和Nodejs的社交网络

时间:2013-07-27 08:06:16

标签: php apache node.js social-networking long-polling

待办事项

我想要实现的是运行和处理社交网络网站需求的混合服务器。

构建

我已经在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一样。(使用websockets然后回退到支持的任何内容,这是使用[socket.io])一个小概述:http://postimg.org/image/p3vq4tkvr/

  3. 我知道的事情

    1. 我可以在节点中使用http-proxy来使用相同的URL,但使用不同的端口。
    2. 我可以使用两个专用的VPN与VPN,一个用于apache,一个用于Node.js。
    3. 我不想在两者之间使用iFrame。
    4. 我不想使用不同的端口,例如www.example.com:3000用于节点,使用www.example.com用于apache。

1 个答案:

答案 0 :(得分:1)

现在就做同样的事情。我将与您分享我的经验。它可能会派上用场。 我们准备好了phpFox的社交网络引擎。决定使用Node.js(用作传输socket.io)对个人消息进行“调整”部分。

从一开始,PHP(phpFox)与Node.js的连接出现了问题。找到了这座桥 - dNode。此模块允许您使用TCP协议在虚拟服务器之间发送数据(驱动程序dNode用于许多流行的programming languages。)

下一个问题 - 数据库。最初,我们使用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会传递侧节点上的user_id
  2. 当node.js得到user_id时 - 他用“对话框”集合拉出所有“对话”并绘制主页面。
  3. 当用户与用户(例如John)打开对话框时,会打开一个页面,其中包含对应http://site.com/mail/{John user_id}
  4. 使用socket.io是实时对话。
  5. 就是这样。我希望我的经验可以帮助你:)

    祝你好运!