我在 Internet 的各个地方看到它提到 HTML5 websockets 不能很好地与 PHP 一起使用,PHP 本质上只适合与它们一起使用。另一方面,我看到了多个关于将 PHP 与 websockets 结合使用的教程,并且我注意到一些 PHP websocket 实现,例如 http://code.google.com/p/phpwebsocket/。
因此,是否有人拥有有关将 websockets 与 PHP 结合使用的任何权威信息。它们可以与 PHP 一起使用吗?与 Java 或 Python 相比,将它们与 PHP 一起使用有哪些优点/缺点?为什么我读到很多人说它们不能很好地协同工作?
最佳答案
问题是 WebSockets 是为长时间运行的线程/进程设计的,每个线程/进程都维护多个事件驱动的连接,而 PHP(和它的 Apache 队列)是围绕短暂的单进程程序范例(例如 max_execution_time
is commonly set to 30 seconds)设计的。 ,并且 session 是单线程的)。
这并不是说用 PHP 编写 WebSockets 服务器实现是不可能的。我知道至少有一个项目存在 done exactly this (但请注意,即使是这个示例也是从命令行运行的,而不是通过 mod_php
)。但是 WebSockets 的 PHP 实现很可能与最常用 PHP 的廉价/共享主机的设置不兼容。
因此,虽然它可以在 PHP 中实现,但无论如何您最终都必须运行一个单独的服务器进程(来自 Apache),并且如果您使用的是允许单独的服务器进程的托管类型,那么编写 WebSockets 代码会更容易在为事件驱动编程设计的东西中。
如果您不打算为数以万计的并发双工连接提供服务,那么结合使用 AJAX 和 SSE 可能会更好。使用您的 PHP 后端。
关于php - websockets 是否适合与 PHP 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11400541/