请原谅我对您的问题的解释。
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 框架),要么来自自认为聪明或想要证明击败GC。(剧透:如果你知道细节的话,每种语言都很容易!)
在 PHP 中设置守护进程(长时间运行的后台进程)是非常可能且非常容易的。甚至可以让它表现得足够好,以优雅地重新启动并将其连接移交给同一脚本的新版本,甚至是运行不同版本 PHP 的同一服务器上的同一脚本,尽管这超出了范围只是一个一点点。
至于是否匹配,完全取决于开发者。您是否愿意、有能力并且乐于使用 PHP 编写 WebSockets 服务器,或者使用现有的服务器之一?是的?那么你就是PHP 和 WebSockets 的好搭档。
3:WebSockets 的 JS 库
老实说,我没有研究过它们。
4:使用 PHP 和 Websockets 的教程
我个人很喜欢这个教程:http ://www.phpbuilder.com/articles/application-architecture/optimization/creating-real-time-applications-with-php-and-websockets.html
尽管我很有权威地认为该教程的细节对于该特定的 WebSockets 服务器很快就会过时。(不过,该服务器仍将有一个积极维护的遗留分支。)
如果链接失效:
使用 PHP-Websockets 服务器(在 Github 上可用,很快就会被托管),扩展基本WebSocketServer
抽象类并实现抽象方法process()
、connected()
和closed()
。
不过,上面的链接有更好的信息,所以只要链接存在,就跟着它。