【问题标题】:How to run a PHP chat program in a free cPanel host?如何在免费的 cPanel 主机中运行 PHP 聊天程序?
【发布时间】:2013-12-11 22:28:37
【问题描述】:

我在 PHP 中创建了一个客户端服务器聊天应用程序。它使用套接字编程进行通信。它在我使用终端的 Fedora 上运行良好。但我需要在服务器中主持聊天。但我没有任何服务器,所以我使用免费托管网站(使用 cPanel)。

有什么方法可以在免费的网络服务器上运行套接字编程的聊天服务器而不访问其终端?

【问题讨论】:

  • 脚本如何监听 - 它是否在后台持续运行?如果是这样,那不太可能被允许在免费主机上运行。我不确定他们是否也允许任意套接字侦听器,因为侦听器将占用每个 IP 的整个端口。我认为您可能需要一个 VPS(尽管细节有限,很难说)。
  • 是否可以从免费的主机服务器向我的 PC 发送 TCP/UDP 消息?他们是否允许在 Http 请求上发送此类数据包?
  • 您是否会将用于执行此操作的代码编辑到您的问题中?
  • 我只是在自我研究这些东西。我会为此编写一个新代码。 :) 你知道我可以从免费托管服务器向本地主机(例如:我的本地电脑)发送加密消息吗???
  • 这取决于主机,但总的来说答案是否定的。正如 Antony 所说,获得一个便宜的 VPS - 它省去了解决这些限制的麻烦。

标签: php sockets client-server chat shared-hosting


【解决方案1】:

大多数免费主机不允许使用 php 模块,如 socket、curl。

当你想通过 http 获取一些 url 时,它们中的许多都禁止使用诸如 file_get_contents 和 fopen 之类的函数 - 实际上它仍在使用套接字。

另外,如果我们谈论聊天服务器,您需要监听某个特定端口上的连接,而自定义入站连接更有可能被禁止。

此类安全功能的一个原因是不允许人们使用免费的托管网络资源、设置不同的抓取工具、垃圾邮件发布者等。

最好给自己买一些便宜的 VPS,因为即使是付费虚拟主机计划也经常受限于上述相同的规则。

【讨论】:

    【解决方案2】:

    如果您无权访问任何外部服务器资源,则可以改用轮询技术。如果无法通过 websockets 或使用 flash 进行连接,则 Socket.IO 具有回退到使用 XMLHttpRequest 轮询的功能。

    例如在客户端,可以设置选项:

    io.set('polling duration', 5);
    

    这将导致 Socket.IO 在内部每 5 秒执行一次 AJAX 请求。在服务器端,您需要使用elephant.io 之类的东西。不幸的是,如果不必推出自己的服务器端解决方案,似乎没有很多替代方案。

    因为 PHP 脚本不会一直在后端运行,所以您需要设计一些机制来跟踪用户状态。这可能相当复杂,但如果您只是为了学习目的而这样做,您可以将其存储在数据库中的用户会话中,或者存储在客户端。每当客户端发出请求时,您将查询您的数据库以检索用户会话,然后使用 Socket.IO 方法从那里开始。

    【讨论】:

    • 是否可以从免费的主机服务器向我的 PC 发送 TCP/UDP 消息?他们是否允许在 Http 请求上发送此类数据包?
    【解决方案3】:

    我刚刚创建了我的本地机器,一个服务器,通过端口转发调制解调器并结合了动态 DNS 技术来跟踪用户的 IP 地址,最后,在用户之间创建了点对点连接以启用聊天。

    在不使用免费托管网站的情况下解决了问题!!!

    【讨论】:

    • 可以,但您的家庭带宽有限,延迟不会很大。此外,家用计算机的停机时间通常比基于机架的服务器更长,即使您打算让它们 24/7 全天候运行也是如此。
    • 你是对的。但是,它适用于我的测试和私人交流。
    猜你喜欢
    • 1970-01-01
    • 2021-03-05
    • 2016-10-16
    • 2015-05-04
    • 2020-11-12
    • 2016-09-09
    • 2011-11-04
    • 2012-01-28
    • 2016-06-06
    相关资源
    最近更新 更多