用于移动应用程序的PHP websocket



我正在创建一个带有服务器后端的移动应用程序,该应用程序将对用户进行身份验证,并在监听移动应用程序的发布数据时不断向他们发送更新。这些更新将是特定于个人的,从数据库中提取。

从我的研究来看,我似乎应该使用websocket。我熟悉PHP,所以尝试过Ratchet。我用Ratchet创建了一个简单的聊天脚本,它在Message上查询数据库并将数据发送到客户端。

我的问题是,websocket适合这个吗?当服务器接收到连接时,它必须每5秒查询一次数据库,并向应用程序发送更新的信息。它必须侦听将更改数据库查询的消息。Ratchet文档中的所有内容似乎都集中在订阅主题上,而不是单独对待每个客户,尽管我已经通过使用来解决这个问题

$client = $this->clients[$from->resourceId];
$client->send("whatever_message"):

我用棘轮是不是让事情复杂化了?还是应该使用子进程来处理每个客户端?

我很抱歉问了一些含糊的问题。我已经尽我所能进行了研究,但无法确定我是否朝着错误的方向前进!谢谢你的帮助。

这是一个很好的公式。在保持套接字连接的同时从应用程序发送post数据是一种很好的进程分布。然而,PHP可能不是运行套接字服务器的最佳选择。

原因是PHP是一种单线程语言,它没有一个优雅的事件系统。

以NodeJ作为替代方案。它也是单线程的,但是您可以在套接字服务器上注册事件,允许软件在等待网络活动时运行额外的控制进程。

然而,这并不限制您使用javascript。工作仍然可以从NodeJs应用程序委托给PHP进程(我只使用NodeJs作为示例,还有其他选项,如Java、Python或好的ol’native)。

为了将工作转移到PHP,您可以执行命令,也可以使用作业服务器来启用同步和异步任务。

以下是一些可以组合起来实现这一目标的资源:

http://nodejs.org/
http://socket.io/
http://gearman.org/
http://php.net/manual/en/book.gearman.php

如果您正在使用Symfony:
https://github.com/mmoreram/GearmanBundle

相关内容

  • 没有找到相关文章

最新更新