在没有HTTP的情况下将结构化数据从PHP发送到Node.js?

时间:2014-01-13 17:44:22

标签: javascript php node.js

我在CodeIgniter框架中有一个PHP应用程序,在带有MySQL数据库的Apache服务器上运行。有很多数据库通信,都是通过抽象层完成的。这是一个游戏应用程序,当用户打开页面时,使用PHP从MySQL获取带有一些其他信息的打开游戏列表并显示在页面上。现在,我需要进行设置,以便列表更新。我需要一个websockets服务器,因为当我使用Ajax时滞后太大,我决定使用Node.js + sockets.io来实现。我不需要每次都联系数据库,我可以根据客户端上的用户操作更新列表。

这就是我被困住的地方 - 第一次用PHP加载列表后,如何将其发送到Node.js?我找到了一个涉及为此目的发送HTTP请求的解决方案,但这似乎是多余的,因为此时我已经在客户端上显示了所有数据。

这是一些示例数据,在PHP数组中显示在页面上之前:

array(2) { [0]=> object(stdClass)#19 (6) { ["id"]=> string(1) "1" ["admin_id"]=> string(1) "2" ["start_date"]=> string(19) "2013-11-18 07:19:46" ["status"]=> string(1) "1" ["username"]=> string(15) "Marko Marković" ["option"]=> string(5) "start" } [1]=> object(stdClass)#20 (6) { ["id"]=> string(1) "2" ["admin_id"]=> string(1) "3" ["start_date"]=> string(19) "2013-11-18 07:20:32" ["status"]=> string(1) "1" ["username"]=> string(13) "Dzoni Noksvil" ["option"]=> string(5) "start" } } 

有没有办法可以将它打包在客户端上,然后让Node从客户端选择数据,这样就不需要将数据从PHP直接发送到Node了?

2 个答案:

答案 0 :(得分:2)

如果您的所有域逻辑都存在于PHP中并且您只想将最终数据集发送到Node(或任何语言),我会考虑这样做: 使用Message Queue或Message Broker。

您正在尝试这样做:

PHP
  |
Node.js

考虑一下:

PHP
 |
Message Queue
 |
Node.js

一旦在两种语言之间建立了通用接口,通信就变得简单了。 PHP可以将已完成的东西推送到您的队列中,node.js可以将其提取以供使用。如果你决定走这条路,请用你的发现更新你的帖子,很想知道它是怎么回事。

答案 1 :(得分:0)

您可以使用库进行进程间通信,例如Apache Thrift。 Node和PHP都有绑定。但是,如果这一切都在一台服务器上运行并且您希望保持简单,那么您可以让PHP写入文件(可能被序列化为JSON)并让Node使用该文件。