将SQL数据保存到PHP文件

时间:2016-02-15 10:40:40

标签: php html css sql

我遇到了一个我无法解决的问题。我想做的是,将所有输出的SQL数据“保存”到文件中(应该以5分钟的时间间隔更新)并在网站上打印出文件。 这是我的示例脚本,它显示数据......但每次加载Web时都会建立连接。

<?php
            mysql_connect($dbserver, $dblogin, $dbpass);
            mysql_select_db($dbname);
            mysql_query("SET NAMES 'utf8'");

            $rektanrekt =  mysql_query("SELECT * FROM characters WHERE (accesslevel < '1') order by pkkills desc LIMIT 10"); 
            $i = 1;
            echo '<table id="top_table"><tr id="table_title"><td></td><td> </td><td>Nick</td><td></td><td>Kills</td></tr>';
        while($row = mysql_fetch_array($rektanrekt))
            {
            echo '<tr><td id="skaiciai">' . $i . '.</td><td></td><td id="nickas"><font>';
            echo $row["char_name"];
            echo '</font></td><td>&nbsp;&nbsp;</td><td id="kills"><font>';
            echo $row["pkkills"];
            echo '</font></td></tr>';
            $i++;
                }
echo '</table>';
?>

它完成了工作 - &gt; http://prntscr.com/a3hpmx 但是有可能对此文件进行“备份”,并在SQL脱机时显示它......或者更好 - 如果SQL为ON,则每次间隔更新文件,如果SQL为OFF则只显示最新的文件?

1 个答案:

答案 0 :(得分:0)

将输出数据保存到文件: 最简单的方法是使用类似于以下内容的代码在文本文件中输出结果:

okHttp

注意:我使用//Call to server to echo MySQL query private void usersInZone() { if (!isNetworkAvailable()) return; rotate(true); OkHttpClient client = new OkHttpClient(); RequestBody formBody = new FormBody.Builder() .add("userId", String.valueOf(userId)) .add("channel", String.valueOf(subport + port)) .build(); Request request = new Request.Builder() .url(SITE_URL + "inZone.php") .post(formBody) .build(); Call users = client.newCall(request); users.enqueue(caller); } //okHttp Callback to parse echo response caller = new Callback() { @Override public void onFailure(Call call, IOException e) { if (RS != null) RS.makePoor(true); } @Override public void onResponse(Call call, Response response) throws IOException { LOG.l(String.valueOf(call)); if (response.isSuccessful()) { try { JSONObject data = new JSONObject(response.body().string()); updateFields(getString(R.string.inzone) + data.getInt("total") + "]", String.valueOf(data.getInt("zone"))); } catch (JSONException e) { LOG.l("JSONException" + e); } } else if (RS != null) RS.makePoor(true); } }; //UI textViews i'm needing to update with the echoed results private void updateFields(String total, String channelTotal){ subtitle.setText(total); tvusercount.setText(channelTotal); } 作为您保存的文件的名称以及您想要的信息,因为它将始终生成新值,因此您不会覆盖日志文件。此外,它还可以帮助跟踪此日志的保存时间。你当然可以把它变得更干净。

间隔执行此操作: 正如jeroen所提到的,一个cron工作可能是你这样做的最佳解决方案。如果您正在使用CPanel(linux),当您访问您的虚拟主机帐户的CPanel主页时(我假设您拥有godaddy或其他提供商的帐户),应该有一个名为“Cron Jobs”或类似的选项。 Cron Job所做的是它是一个“预定事件”,被告知在你指定的时间间隔内执行某个文件(你还指定了你的文件目录)。我在youtube上为你找到了一个例子,但视频有点过时,但过程应该类似: https://www.youtube.com/watch?v=bmBjg1nD5yA

编辑:我注意到你正在研究L2Aria,如果你需要任何帮助,请告诉我! :)