LAMP Guy如何轻松实现WebSockets?

Nic*_*ick 7 php websocket

我一直在使用Apache,MySQL和PHP.我想最终分支到Python/Django或Ruby/Ruby on Rails,但这是另一个讨论.关于Apache,MySQL和PHP的两个很棒的东西都是无处不在的,它们很容易启动网站.只需设置一个Apache虚拟主机,将数据库导入MySQL,然后将PHP文件复制到服务器上.而已.这就是我所做过的一切,也是我所知道的.请记住这一点.

如今,网站能够实时向用户提供数据变得越来越重要.由于Facebook和Gmail的实时特性,用户也期待这一点.此效果可以使用Ajax轮询伪造,但是,有一个很大的开销,如解释在这里.我想使用WebSockets.现在记住,我一直都是一个LAMP人.我只使用我之前描述的方法推出了网站.因此,如果我有一个CakePHP网站,我如何"添加"WebSockets的功能?我是否需要安装其他服务器或某些东西,还是可以让它与Apache一起顺利运行?它需要Apache 2.4吗?请向我解释一下这个过程,记住我只知道LAMP.谢谢!

Wes*_*ton 4

要记住的一件关键事情是,实时 Websockets 服务器需要“长时间运行”,以便它可以将内容推送到客户端。在经典的 LAMP 设置中,Apache 对每个请求生成一个 PHP 解释器。在请求之间,PHP 解释器不运行,请求之间保留的唯一协议状态是会话。

LAMP 方式的一个优点是内存管理很容易。您只需隐式分配所需的任何内存,当请求完成并且 PHP 进程退出时,它会自动回收。一旦你希望服务器继续运行,你就需要考虑内存管理。在某些语言中,例如 C++,您可以显式管理分配和释放。在其他语言中,例如 Java 或 Javascript,您可以进行垃圾收集。在 PHP 中,您可以扔掉所有内容,并在每个请求上重新开始。

我认为您将很难使用 Cake 或任何其他经典 PHP 框架来制作长时间运行的服务器。这些框架的工作原理基本上是获取 HTTP 请求并将其转换为 HTTP 响应。

我的建议是你应该研究一下 Node.JS 和 SocketIO 之类的东西。如果您了解 Javascript,或者不介意学习,这些技术可以让您轻松实现实时服务器和客户端。如果有必要,你可以运行像 nginx 这样的反向代理,这样你现有的 LAMP 堆栈就会收到一些请求,而一个或多个 NodeJS 服务器也会收到一些请求。

这个答案有点模糊,但我希望它能有所帮助..:-)