【问题标题】:Are websockets suitable for use with PHP?websockets 是否适合与 PHP 一起使用?
【发布时间】:2012-07-09 04:12:47
【问题描述】:

我在互联网上的各个地方都看到过,HTML5 websockets 不能很好地与 PHP 一起使用,PHP 本质上只适合与它们一起使用。另一方面,我看到多个关于使用 PHP 和 websockets 的教程,我注意到一些 PHP websocket 实现,例如http://code.google.com/p/phpwebsocket/

那么有没有人有任何关于在 PHP 中使用 websockets 的确切信息。它们可以与 PHP 一起使用吗?与 Java 或 Python 相比,将它们与 PHP 一起使用有哪些优点/缺点?为什么我读到很多人说它们不能很好地协同工作?

【问题讨论】:

  • 您可能有兴趣阅读有关 NodeJS 和 socket.io 的信息。这取决于你的项目,但它可能会给你你需要的东西:nodejs.orgsocket.io

标签: php html sockets websocket


【解决方案1】:

我最近尝试了 phpwebsocket,但此时它不起作用(php 5.4 和 chrome)代码指的是握手中的第二个密钥,该密钥在 rev 中不存在。 websocket 协议的 13 条我没有时间阅读 RFC 来了解这是怎么回事。

可以肯定,这个解决方案比长轮询的 AJAX 更优雅,反应更灵敏,但是 websockets 目前不稳定,我认为等待 w3c 宣布它稳定会更有趣。

【讨论】:

    【解决方案2】:

    问题在于,WebSockets 是为长时间运行的线程/进程设计的,每个线程/进程都维护多个事件驱动的连接,而 PHP(以及它的 Apache 队列)是围绕短命的单进程程序范式设计的(例如 max_execution_time is commonly set to 30 seconds ,并且会话是单线程的)。

    这并不是说用 PHP 编写 WebSockets 服务器实现是不可能的。我知道至少存在一个具有done exactly this 的项目(但请注意,即使这个示例也是从命令行运行的,而不是通过mod_php)。但很可能 WebSockets 的 PHP 实现与 PHP 最常用的廉价/共享主机的设置不兼容。

    因此,虽然它可以在 PHP 中实现,但无论如何您最终都必须运行一个单独的服务器进程(来自 Apache),如果您使用的托管类型允许单独的服务器进程,那么编写 WebSockets 代码会更容易在为事件驱动编程而设计的东西中。

    如果您不打算为数以万计的并发双工连接提供服务,那么最好将 AJAX 和 SSE 与 PHP 后端结合使用。

    【讨论】:

    • php-fpm 怎么样?而php7采用JIT技术?这个答案应该更新。
    猜你喜欢
    • 2011-04-08
    • 2016-07-03
    • 2013-08-26
    • 2011-03-01
    • 2021-11-15
    • 1970-01-01
    • 2018-04-13
    • 2013-02-17
    • 2013-09-16
    相关资源
    最近更新 更多