我在互联网上的许多地方都看到过,places与HTML5不能很好地协同工作,而places本身就很适合与之配合使用。另一方面,我看到了很多关于在websocket中使用PHP的教程,我注意到了一些PHP实现,比如http://code.google.com/p/phpwebsocket/
那么,有没有人有关于在PHP中使用websockets的明确信息。它们可以与PHP一起使用吗?与Java或Python相比,在PHP中使用它们的优缺点是什么?为什么我读到很多人说它们不能很好地协同工作?
发布于 2012-07-10 03:25:41
问题是WebSockets是为长时间运行的线程/进程设计的,每个线程/进程都维护多个事件驱动的连接,而PHP (以及它的Apache cohort)是围绕着短暂的单进程过程范例(例如。max_execution_time is commonly set to 30 seconds,并且会话是单线程的)。
这并不是说用PHP编写WebSockets服务器实现是不可能的。我知道至少有一个项目具有done exactly this (但请注意,即使这个示例也是从命令行运行的,而不是通过mod_php)。但很可能WebSockets的PHP实现与最常使用PHP的廉价/共享主机的设置不兼容。
因此,虽然在PHP中可以做到这一点,但你最终还是必须运行一个单独的服务器进程(来自Apache),如果你在允许独立服务器进程的主机上,那么在为事件驱动编程而设计的东西中编写WebSockets代码会更容易。
如果您不打算为数万个并发的双工连接提供服务,那么在PHP后端结合使用AJAX和SSE可能会更好。
发布于 2012-07-12 21:39:52
我最近尝试了phpwebsocket,但它现在不能工作(php 5.4和chrome)代码引用了握手中的第二个键,这在websocket协议的Rev.13中是不存在的,我没有时间阅读RFC来理解问题所在。
可以肯定的是,这种解决方案比使用长轮询的AJAX更优雅、更具反应性,但是目前websockets还不稳定,我认为等待w3c宣布它稳定会更有趣。
https://stackoverflow.com/questions/11400541
复制相似问题