【问题标题】:Social network with PHP and Nodejs [closed]使用 PHP 和 Nodejs 的社交网络 [关闭]
【发布时间】:2013-07-27 13:39:41
【问题描述】:

待办事项

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

构建

我在 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/

我知道的事情

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

【问题讨论】:

  • 它会降低我的网站性能吗?因为:“通过 Apache 传入的每个请求都会导致 Apache 线程等待/阻塞,直到从您的 Node.js 进程返回响应。”
  • 是的,添加额外的代理必然会增加延迟,而 Apache 和 Node.js 都不是很擅长。如果有大量静态内容,您可能需要考虑在端口 80 上使用 Varnish 之类的东西,并让该代理同时用于 Apache 和 Node。

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


【解决方案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 一起使用是不合理的。出于这个原因,决定使用“对话”(写在 node.js 上的个人消息的代号)非关系数据库 MongoDB。该脚本是由 Python 编写的(可以使用和 PHP,但对于此类任务,我更喜欢使用 Python - 脚本的最佳性能和执行速度),即“永久” 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 是实时对话。

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

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 2011-03-23
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多