首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Websockets & PHP

Websockets & PHP
EN

Stack Overflow用户
提问于 2013-03-05 09:44:01
回答 2查看 4.1K关注 0票数 4

我开始考虑websockets作为一种解决方案,在我正在调试的一个新构建PHP应用程序中代替长轮询。

我有几个问题,不知道人们能不能帮我解决。

  1. Nodejs服务器可以调用PHP吗?如果它调用了PHP,它就不会在连接方面遇到与仅仅通过Apache相同的缺点吗?我们都知道nodejs是非阻塞的,Apache等不是,但是如果Nodejs只是在它自己的过程中调用一个PHP服务器,这不是以类似的方式瓶颈吗?
  2. PHP和websockets是很好的匹配吗?
  3. 除了socketio之外,还有什么好的js库显然只适用于Nodejs?
  4. 有没有人找到了一个很好的教程,它使用websockets和PHP后端,可能使用类似于棘轮PHP库的东西,这可能会帮助我上路吗?

我们会非常感激你的想法。

EN

回答 2

Stack Overflow用户

发布于 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()

不过,上面的链接有更好的信息,所以只要链接存在,就遵循它。

票数 2
EN

Stack Overflow用户

发布于 2013-03-05 09:57:53

  1. 如果您通过apache,就会遇到同样的瓶颈。这可以通过使用不同的web服务器来补救,比如lighthttpdnginx。您甚至根本不需要节点。
  2. PHP没有体面的共享内存,这使得WebSockets的最大优势与之无关。如果不希望用户之间的交互,那么它就足够了,但是即使这样,我也不得不对PHP的使用不屑一顾。PHP对于很多事情来说都是很棒的,但是实时通信并不是其中之一。
  3. 您可能想看看https://github.com/einaros/ws
  4. PHP不是一个好的后端。任何在自己的沙箱中没有运行和忘记的执行模型,如Node.NETC/C++Java都是很好的匹配。PHP适合于短时间运行的执行,例如实际的网站,甚至web服务--但不适合实时连接。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15220501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档