将 websockets 与 PHP 和 MySQL 脚本一起使用的最佳方式是啥? [关闭]

Posted

技术标签:

【中文标题】将 websockets 与 PHP 和 MySQL 脚本一起使用的最佳方式是啥? [关闭]【英文标题】:What is the best way to use websockets along with PHP and MySQL scripts? [closed]将 websockets 与 PHP 和 MySQL 脚本一起使用的最佳方式是什么? [关闭] 【发布时间】:2013-11-04 17:34:35 【问题描述】:

将 websockets 与 phpmysql 脚本一起使用的最佳方式是什么?

如果我想在我的 PHP 站点中添加实时聊天,或者在实时执行 X 操作时将变量存储到 MySQL 数据库(例如,对于 RPG 网站交易)。

我找到了Ratchet,高效实现这些东西是个不错的选择吗?也许同时使用 Node.js 和 PHP?我不知道该怎么办。

【问题讨论】:

查看这篇关于实时网络技术和 PHP 现状的文章 leggetter.co.uk/2013/10/18/… 您如何看待客户端使用 jQuery / javascript 发送 websocket,然后使用 Node.js 作为 websocket 服务器,如果需要,通过 dnode-php 调用 PHP 脚本/函数。这样我就不必直接用 PHP 处理 websockets,但我仍然可以将我的网站保留在 PHP 中,让 Node.js 来处理 websockets 通信。 【参考方案1】:

几个月前我有同样的问题,经过一些修补和研究后自己回答了这个问题。

我将 Node.js 与 PHP 结合使用。

基本上,它是这样工作的。 Apache/php 根据请求向客户端发送一个页面。它包含一个身份验证令牌。 浏览器初始化 socket.io 并将令牌发送回节点 js 服务器。然后节点将令牌发送到私有 API(如果您愿意的话)到 Apache 服务器,请求用户所需的上下文(例如用户 ID)。当节点取回它时,它将它存储在"connection ID" => "user ID" 表中。 (或路由表(哈希映射的花哨的特定术语))

如果用户向另一个用户发送“聊天”消息,它会通过 ajax 进入 Apache,进行数据库/处理工作,然后将其传递回后端的 Node.js,后者将用户 ID 插入路由表并将消息发送到用户浏览器。

我不能发布代码,因为这可能会在某些时候用于生产,但这就是我使用基于 LAMP 的服务器的方式。

注意:您需要实施一个字符串帐户管理系统才能使其工作,我为自己的帐户处理系统实施了这个概念,因此在我的情况下它是非常特定于应用程序的。

需要令牌是为了安全。例如,此令牌可以是会话 ID。可以在后端而不是前端派生用户 ID 的东西。它应该定期更改。这样,如果它被破坏,攻击者将无法长时间或根本无法连接到实时会话。

这个概念可以改进。例如每个请求的令牌,每个请求都会更改,只能使用一次。这是我目前正在使用我的实时通知系统进行的工作。

【讨论】:

以上是关于将 websockets 与 PHP 和 MySQL 脚本一起使用的最佳方式是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现类似于MySQ L的group by 效果

php swoole 和 websocket的初次碰撞

html5的websocket和php的socket分别完成客户端与服务器端的通信过程。

使用 php 将数据推送到 websocket 服务器

使用棘轮 php 将消息推送到 websockets 而没有 ZeroMQ

websockets 和 PHP 基础知识和计划