gpt4 book ai didi

php - LAMP 专家如何轻松实现 WebSockets?

转载 作者:可可西里 更新时间:2023-11-01 12:57:04 25 4
gpt4 key购买 nike

我一直使用 Apache、MySQL 和 PHP。我想最终扩展到 Python/Django 或 Ruby/Ruby on Rails,但那是另一个讨论。 Apache、MySQL 和 PHP 有两个优点,这三个都无处不在,而且启动网站非常容易。只需设置一个 Apache 虚拟主机,将数据库导入 MySQL,然后将 PHP 文件复制到服务器上。而已。这就是我所做的一切,也是我所知道的一切。请牢记这一点。

如今,网站能够向用户实时提供数据变得越来越重要。由于 Facebook 和 Gmail 的实时性,用户也希望如此。可以使用 Ajax 轮询来伪造这种效果,但是这会带来很多开销,如 here 所解释的那样。 .我想使用 WebSockets。现在请记住,我一直是 LAMP 人。我只使用我之前描述的方法启动网站。因此,如果我有一个 CakePHP 站点,我该如何“添加”WebSockets 的功能?我是否需要安装一些其他服务器或其他东西,或者我能否让它与 Apache 一起顺利工作?它需要 Apache 2.4 吗?请向我解释这个过程,记住我只知道 LAMP。谢谢!

最佳答案

要牢记的一件重要事情是,实时 websockets 服务器需要“长时间运行”,以便它可以将内容推送给客户端。在经典的 LAMP 设置中,Apache 为每个请求生成一个 PHP 解释器。在请求之间,PHP 解释器不运行,并且在请求之间保持的唯一协议(protocol)状态是 session 。

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

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

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

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

关于php - LAMP 专家如何轻松实现 WebSockets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com