我在 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?p>
最佳答案
如果您的所有域逻辑都存在于 PHP 中,并且您只想将最终数据集发送到 Node(或任何语言),我会考虑这样做: 使用Message Queue或消息代理。
您正在尝试执行此操作:
PHP
|
Node.js
考虑一下:
PHP
|
Message Queue
|
Node.js
一旦两种语言之间有了通用接口(interface),沟通就会变得很容易。 PHP 可以将已完成的内容推送到队列中,而 Node.js 可以将其拾取以供使用。如果您决定走这条路,请用您的发现更新您的帖子,很想听听进展如何。
- RabbitMQ
- ZeroMQ (有点像套接字系统库) - 读取很多好东西
- Great video详细解释ZeroMQ
关于javascript - 在没有 HTTP 的情况下将结构化数据从 PHP 发送到 Node.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097898/