我遇到了一个我无法解决的问题。我想做的是,将所有输出的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> </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则只显示最新的文件?
答案 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,如果你需要任何帮助,请告诉我! :)