3

我一直在寻找使用 PHP 制作实时网站。(彗星)我已经找了很长时间了。(大约一个月)我什至检查了一些 PHP 聊天脚本并在我的网络服务器上使用,但我在其中大部分都遇到了一些问题。(将解释)

到目前为止,大多数人都在说同样的事情:PHP 并不是可以与 COMET 一起使用的最佳语言。聊天/彗星的例子充其量是hacky。

我问这个是因为,我想在我的网站上有一些功能,比如允许登录的人互相聊天。这就是我需要与 PHP 页面建立有效连接的地方。我还计划制作一个基于浏览器的游戏,并且仍然需要一个活跃的连接!

AJAX 是 2 年前稀有的东西,在 Facebook 上大放异彩。现在几乎每个人都在使用它,它成为了 Web 开发的标准。现在,基于 COMET 的网站正在增长。Youtube、Google+、Facebook、EA 的 Battlelog 等。我相信我应该学习如何使用它。

好的,这是我的问题。(下面的一些信息是我在谷歌上搜索时收集的。不确定它们是否正确。)

  1. 像 Python 这样的一些语言有专门为这项工作设计的 Web 服务器。我相信其中之一叫做 Tornado Web Server。开发和配置以模拟数千个活动连接。我相信 Appserv 中没有这样的选项,但有人告诉 NGINX 可以通过一个不错的配置来处理它。这是真的吗?应该做哪些配置?是否有适用于此工作的 PHP Web 服务器?

  2. 一些最建议的事情是:

    一个。使用 APE。

    湾。使用 Socket.IO

    C。节点.js

    有什么方法可以将它们与 PHP 一起使用?哪一个最有前途?你能给他们一些指导吗?除了这些还有别的吗?

  3. 我使用了彗星聊天脚本。基本上,您一直在查询数据库,并通过在循环中使用 usleep() 将其休眠,并使用 flush() 将结果输出到浏览器。(这个变得难以理解,所以我将提供一个快速代码)

    while(true)
    {
        // query database
       // output the result
       // flush the browser
       // sleep for few seconds to lower cpu load 
    }
    

usleep()功能基本上破坏了我在基于 Windows 的操作系统上的 Web 服务器。依赖在usleep()基于 Windows 的操作系统上运行的彗星应用程序是否正常?我的意思是,有没有办法让 PHP 脚本“休眠”?无论我做什么,WIN 和 UNIX 服务器上的 CPU 负载都会达到 %100。

  1. PHP 在这方面“真的”那么弱吗?我应该放弃 PHP 并专注于其他语言吗?如果是这样,您会建议哪种语言?(那个语言应该是有前途的,比如HTML5加了AS3就没什么用了,JS大放异彩的时候AS3很快就死了。)

  2. 什么是 WebSync?它可以与PHP一起使用吗?

请记住,我需要使用 COMET 进行以下应用程序:

  • 一个聊天脚本,登录的玩家将能够互相聊天。
  • 基于浏览器的游戏。我在编码时已经使用了 JSON/AJAX 之类的东西,但是要接收对手的步骤,我应该提取数据,因此需要一个活动连接。(不要想象高级游戏,我说的充其量是国际象棋之类的游戏。)

如果您能给我一个简短的指导,我将不胜感激。毕竟,自从互联网上有很多随机文章以来,我每天都感到困惑。人们甚至称它为setInterval()COMET,所以它是一团糟。

4

2 回答 2

1

这里需要澄清一下。您要查找的内容本身并不是特定于语言的。如果您想用 PHP 实现彗星功能,您将依赖 Web 服务器(例如 Apache)来执行 HTTP 流。您还需要了解 HTTP/1.1 之前的 HTTP 版本不支持此功能。话虽如此,如果您想拥有一个基于事件的非阻塞 Web 服务器,最好按照建议查看 Tornado 和 Node。

于 2012-05-03T22:06:39.760 回答
0

Comet 是一种编程技术,它使 Web 服务器无需客户端请求就可以向客户端发送数据 这种技术将产生比经典 AJAX 更具响应性的应用程序 用户必须创建请求(例如通过单击链接)或者必须发生周期性的 AJAX 请求才能从服务器获取新数据。

但它会在您的网络服务器上产生大量流量。如果您想在 PHP 中构建聊天应用程序,请使用 pusher,它是第三方服务且易于使用。这是推送器的链接https://pusher.com/tutorials/realtime_chat_widget

第二个建议是使用棘轮来创建聊天应用程序。这是棘轮http://socketo.me/docs/hello-world的链接

我希望它会帮助你

于 2016-09-26T09:41:50.743 回答