0

我有一个用 C# 编写的 Minecraft 软件,我想向我的网站发送心跳。我有办法发送已经写好的节拍。

 if (Server.Uri == null) return;
        string uri = "http://GemsCraft.comli.com/Heartbeat.php";
        // create a request
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Method = "POST";

            // turn request string into a byte stream
            byte[] postBytes = Encoding.ASCII.GetBytes(string.Format("ServerName={0}&Url={1}&Players={2}&MaxPlayers={3}&Uptime={4}",
                             Uri.EscapeDataString(ConfigKey.ServerName.GetString()),
                             Server.Uri,
                             Server.Players.Length,
                             ConfigKey.MaxPlayers.GetInt(),
                             DateTime.UtcNow.Subtract(Server.StartTime).TotalMinutes));

            request.ContentType = "application/x-www-form-urlencoded";
            request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
            request.ContentLength = postBytes.Length;
            request.Timeout = 5000;
            Stream requestStream = request.GetRequestStream();

            // send it
            requestStream.Write(postBytes, 0, postBytes.Length);
            requestStream.Flush();
            requestStream.Close();
            /* try
             {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Logger.LogToConsole(new StreamReader(response.GetResponseStream()).ReadToEnd());
                Logger.LogToConsole(response.StatusCode + "\n");
             }
             catch (Exception ex)
             {
                 Logger.LogToConsole("" + ex);
             }*/
        }

现在,我希望能够在 PHP 中检索心跳,将其上传到 SQL 数据库,然后将每个用户的服务器显示在一个表格中,该表格将显示在网页上

我该怎么做呢?

4

2 回答 2

1

portforwardpodcast 的答案不太适合您的目的,这是您思考的过程

服务器访问如下页面:heartbeat.php?port=25565&maxplayers=25&players=2&name=Cheese_Pizza_Palace

然后,您的 PHP 脚本将执行以下操作...

  • 遍历每个值,确保它们是您希望它们成为的所有类型(整数/字符串)
  • 连接到数据库
  • 如果数据库中的服务器已经存在,则更新它,如果不存在则创建它
  • 返回一些值,以便服务器知道它已成功完成。

并显示服务器

  • 获取所有“活动”服务器
  • 遍历它们并显示每一个。

你需要弄清楚的事情:

  • 如何确定正常运行时间
  • 如何确定“活动”服务器
  • 如何更新/创建 MySQL 条目
  • 如何(正确)连接到数据库。我建议使用 PDO,因为您使用的是 PHP。这有点难学,但比直接编写查询要安全得多。
  • 如何遍历所有 GET 变量。

好狩猎!

于 2013-11-30T04:24:55.000 回答
0

我会创建一个简单的 php 页面,接受一个 get 变量。就像www.site.com/beat.php?lasttime=123456&serverid=1 我们的号码一样unix timestamp。然后您需要重新编写您的 c# 以在网站上执行简单的获取请求。最后,你的 php 应该插入一个带有 , 等列的 mysqlid表中timestampserver_id

首先,您需要从请求中提取数据。php 中的 $_REQUEST 变量很好,因为它适用于 GET 和 POST:

http://php.net/manual/en/reserved.variables.request.php

从 var_dump 开始或回显您想要的字段。一旦您可以将所需的数据放入变量中,您就完成了第一部分。对于下一部分,您需要在 MySQL 中创建一个数据库和表。最好的工具是 phpmyadmin。如果你有一个像 godaddy (或其他一些)这样的主机,你可以从控制面板得到这个。如果没有,您可能需要自己安装上传 phpmyadmin 文件。这是一个非常简单的工具:

http://www.youtube.com/watch?v=xxQSFHADUIY

一旦你的数据库有正确的列,你需要从你的 php 文件中插入数据。这个页面应该有帮助:

http://www.w3schools.com/php/php_mysql_insert.asp

于 2013-11-30T04:15:21.893 回答