我开始考虑使用websockets作为在我正在调试的新构建PHP应用程序中替换长轮询的解决方案。
我有几个问题,我想知道人们是否可以帮助我。
非常感谢思考。
答案 0 :(得分:2)
请原谅我对你的问题的解释。
1: Node.js可以调用PHP,并且不会有与Apache相同的缺点吗?
调用运行一次的PHP脚本与调用网页具有相同的一般缺点,除了您要删除额外的处理层。 Apache或任何Web服务器本身都是如此薄的一层,虽然您节省了一些时间,但节省的费用却微不足道。
如果PHP在为客户收集数据方面比Node.js更有效,无论出于何种原因,那么在您的应用程序中包含PHP可能是明智之举。
2: PHP和WebSockets是否匹配良好?
传统的PHP脚本通常用于每个请求运行一次。绝大多数PHP开发人员不熟悉事件驱动开发,而PHP本身(尚未)支持异步处理。
PHP是一种快速,成熟的脚本语言,它的速度越来越快,即使存在许多瑕疵和缺点。 (有人说它的弱打字是一个缺点。其他人说这是一个缺点,它的打字不够弱。)
也就是说,任何语言实现WebSockets所需的最小值是能够打开基本TCP端口并监听请求。对于PHP,它是作为C套接字库的一个瘦包装器实现的,还有其他扩展和框架可用,它们也可以改变使用PHP在TCP套接字中工作的感觉。
PHP的垃圾收集器也已经成熟。内存泄漏要么是因为完全无视内存空间(我看着你,Zend Framework),要么是开发人员故意破坏垃圾收集系统,他们认为他们很聪明或者想要证明它有多容易是打败GC。 (剧透:如果你知道细节,那么每种语言都很简单!)
在PHP中设置守护进程(长时间运行的后台进程)是非常可能和非常容易的。它甚至可以使其表现良好,足以优雅地重新启动并将其连接关闭到同一脚本的新版本,甚至是运行不同版本的PHP的同一服务器上的相同脚本,尽管这是踩踏范围只是一点点。
至于它是否是一个很好的匹配,完全取决于开发者。您是否愿意,能够和乐于使用PHP编写WebSockets服务器,或者使用现有服务器之一?是?然后你与PHP和WebSockets完美匹配。
3:用于WebSockets的JS库
老实说我还没有研究过它们。
4:使用PHP和Websockets的教程
虽然我有很好的权限,但该教程的细节很快就会针对该特定的WebSockets服务器而过时。 (但是,该服务器仍然会有一个积极维护的旧分支。)
如果链接腐烂:
使用PHP-Websockets服务器(在Github上可用,将很快归属),扩展基础WebSocketServer
抽象类并实现抽象方法process()
,connected()
和{{ 1}}。
在上面的链接中有更好的信息,所以只要链接存在就可以关注它。
答案 1 :(得分:0)