请原谅我解释你的问题。
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:JS库的的WebSockets
老实说,我还没有研究它们。
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()
。
有在链路更好的信息上面,虽然如此,遵循它,只要存在链接。
Ratchet PHP很干净。我也正在[我自己的实现(包括演示)](https://github.com/PeeHaa/WebSocketDemo)。 – PeeHaa 2013-03-05 09:47:20
@PeeHaa不错的演示 – Baba 2013-03-05 11:01:54
可能是有用的,包括演示应用程序,http://www.techzonemind。com/php-websocket-library-two-way-real-time-communication/ – 2014-05-07 15:49:14