我一直使用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。谢谢
需要记住的一件关键事情是,实时websockets服务器需要"长时间运行",这样它才能将内容推送给客户端。在经典的LAMP设置中,Apache为每个请求生成一个PHP解释器。在请求之间,PHP解释器没有运行,并且在请求之间保持的唯一协议状态是会话。
LAMP方式的一个很好的特性是,内存管理很容易。您只需隐式地分配所需的任何内存,当请求完成时,它会自动回收,PHP进程就会退出。一旦您希望服务器继续运行,就需要考虑内存管理。在某些语言中,如C++,您可以显式管理分配和解除分配。在其他语言中,如Java或Javascript,有垃圾收集。在PHP中,您可以丢弃所有内容,并在每个请求上重新开始。
我想你会很难用Cake或任何其他经典的PHP框架来制作长时间运行的服务器。这些框架的工作原理基本上是接受HTTP请求并将其转换为HTTP响应。
我的建议是,你应该研究Node.JS和SocketIO之类的东西。如果你知道Javascript,或者不介意学习,这些技术可以让你轻松地实现实时服务器和客户端。如果需要,你可以运行一个像nginx这样的反向代理,这样你现有的LAMP堆栈就会得到一些请求,一个或多个NodeJS服务器就会得到一些。
这个答案有点含糊,但我希望它能有所帮助