我开始考虑websockets作为一种解决方案,在我正在调试的一个新构建PHP应用程序中代替长轮询。
我有几个问题,不知道人们能不能帮我解决。
我们会非常感激你的想法。
发布于 2015-06-16 00:11:32
请原谅我对你的问题的理解。
1:可以Node.js调用Node.js,这不像Apache?那样有缺点吗?
调用一个运行一次的PHP脚本将具有与调用网页相同的一般缺点,只不过您要删除一个额外的处理层。Apache或任何web服务器本身都是一个非常薄的层,虽然您可以节省一些时间,但节省的费用将是微不足道的。
如果由于任何原因,PHP在为客户端收集数据方面比Node.js更有效,那么最好在应用程序中包含PHP。
2:和WebSockets是很好的匹配吗?
传统的PHP脚本通常打算在每个请求中运行一次。绝大多数PHP开发人员都不熟悉事件驱动的开发,PHP本身也不支持异步处理。
PHP是一种快速、成熟的脚本语言,它的速度越来越快,尽管它有许多缺点和缺点。(有人说它的打字能力弱是个缺点。其他人说它的缺点是它的打字不够弱。)
也就是说,任何语言实现WebSockets所需的最低限度是打开一个基本的TCP端口并侦听请求的能力。对于PHP,它是作为C套接字库的一个薄包装器实现的,还有其他可用的扩展和框架,这些扩展和框架也可以改变在TCP套接字中使用PHP的感觉。
PHP的垃圾收集器也已经成熟。内存泄漏要么来自对内存空间的严重忽视(我正在查看您,Zend Framework),要么来自于开发人员故意破坏垃圾收集系统,这些开发人员认为他们很聪明,或者希望证明击败GC是多么容易。(剧透者:每种语言都很简单,如果你知道细节的话!)
在PHP中设置守护进程(长时间运行的后台进程)是非常可能的,也是非常容易的。甚至有可能使它表现良好,能够优雅地重新启动并将其连接传递到同一脚本的新版本,甚至在同一台运行不同版本PHP的服务器上的相同脚本,尽管这有点超出了范围。
至于这是否是一个好的匹配,这完全取决于开发人员。您是否愿意、能够和乐于使用PHP编写WebSockets服务器,或者使用现有的服务器之一?是?那么,您就可以很好地匹配PHP和WebSockets。
3:用于 WebSockets的JS库
我真的没研究过他们。
4:使用和Websockets的教程
我个人喜欢这个教程:http://www.phpbuilder.com/articles/application-architecture/optimization/creating-real-time-applications-with-php-and-websockets.html
尽管我有很好的权威,但对于特定的WebSockets服务器,该教程的具体内容很快就会过时。(不过,该服务器仍将有一个积极维护的遗留分支。)
万一链接腐烂:
使用PHP服务器(在Github上可用,很快就可以找到),扩展基类WebSocketServer抽象类,并实现抽象方法process()、connected()和closed()。
不过,上面的链接有更好的信息,所以只要链接存在,就遵循它。
发布于 2013-03-05 09:57:53
https://stackoverflow.com/questions/15220501
复制相似问题