代码之家  ›  专栏  ›  技术社区  ›  Martin Konecny

浏览器之间通过PHP进行通信

  •  4
  • Martin Konecny  · 技术社区  · 15 年前

    非常 繁琐的方法:

    1) 用户A发送消息,该消息被服务器端PHP脚本接受并保存到数据库中 2) 用户B的浏览器定期启动服务器端PHP脚本,检查数据库中是否有用户B的消息。PHP脚本找到来自用户A的消息并返回它们。

    这是正确的方法吗?这两个用户之间的通信能在没有数据库的情况下实现吗?

    (这是我的第一个web应用程序…如果我在没有浏览器+HTTP的情况下制作这个应用程序,我只会制作一个Java程序,它带有持久类,侦听TCP套接字,并将消息转发到适当的地址)

    6 回复  |  直到 15 年前
        1
  •  3
  •   Jey Geethan    15 年前

    是的,你的解决方案已经足够好了。您所做的是轮询服务器是否有特定用户的聊天信息。够好了。

    先试试你的方法,然后再试试这个。

        2
  •  2
  •   Ignacio Vazquez-Abrams    15 年前

    每个PHP“实例”只在请求期间持续,因此您需要一个持久性存储,例如用于聊天消息的数据库。

    是的,我知道这确实有效,因为我在过去实现了一个非常类似的系统。

        3
  •  2
  •   Layke    15 年前

    彗星接近

    Teehoo,如果你想要一个工作方法,你的建议会很好,特别是如果它只是一个学校的项目。

    如果你想要像Facebook那样的方式,你应该看看commethttp连接。它非常聪明。我记得当我第一次读到它的时候,我觉得它很有创意。它提供了快速更新,并通过不断轮询新消息几乎消除了AJAX依赖性,因为您可以保持与web服务器的连接不断打开。

    阅读一下comet http连接(但不要看comet聊天应用程序,它们是一家试图销售类似于facebook聊天应用程序的产品的公司,而不是您想要的。。尽管他们已经实现了comet方法)。

    #

    http://en.wikipedia.org/wiki/Comet_(programming)

    http://www.zeitoun.net/articles/comet_and_php/start

    但不管怎样,你的建议对学校的项目来说很好。

        4
  •  0
  •   jldupont    15 年前

    这是正确的方法吗?这两个用户之间的通信能在没有数据库的情况下实现吗?

        5
  •  0
  •   douwe Top Questions    15 年前

    您还可以使用类似comet的javascript方法。在PHP页面收到消息之前,您可以保持从浏览器打开到PHP页面的连接。

    但是,您仍然局限于为每个连接提供PHP页面,因此需要一些存储空间。如果你想它真的很快,你可以使用内存。

    在PHP中使用内存: http://www.php.net/manual/en/function.apc-add.php

    http://www.zeitoun.net/articles/comet_and_php/start#comet_with_classic_ajax_litte_chat_demo

        6
  •  0
  •   Derek Organ    15 年前

    但是您必须以某种方式将数据存储在中央服务器上。对于聊天应用程序来说,rational数据库并不适合这种聊天类型的应用程序,但只有当您有一个大型站点时,它才是真正相关的。如果你这样做是为了一个项目,那么一个数据库将足够好,足以存储聊天信息。您只需要使用javascript/ajax轮询数据库中的新消息。

    如果您对不使用数据库感兴趣,我建议您使用非sql方法。谷歌是你在这方面的朋友,因为有很多选择。

    推荐文章