【发布时间】:2015-03-26 00:35:47
【问题描述】:
我正在使用 PHP 读取 .txt 文件,并将数据解析到网页。 .txt 文件是显示我的服务器状态的本地日志文件,我目前可以读出最后一行并将其推送到我的站点。
但是,当我的服务器状态发生变化时,.txt 文件会在本地更新,但新值永远不会出现在网站上。
我使用 HTML5/Javascript 来显示内容,使用 PHP 来读取文件和解析/清理输入。我附加的代码段显示了我正在使用的 PHP 文件读取函数,每 10 秒运行一次。运行此段后,刷新显示(我使用的是 HTML5 画布),但数据保持不变。仅当我手动刷新页面时才会更新显示。
是否有可能每 10 秒左右轮询一次这个 txt 文件,并将最后一行推送到我可以调用的变量中?
function getCurrentStatus() {
<?php
clearstatcache();
$myFile = "C:\available.log";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
$statusList = explode("\n", $theData);
$statusListLength = count($statusList) - 2;
$currentStatus = explode(" ", $statusList[$statusListLength]);
$previousStatus = explode(" ", $statusList[$statusListLength - 1]);
$myFile = "C:\std_server0.out";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
$garbageCollector = array_map('trim',explode("\n", $theData));
$garbageCollectorLength = count($garbageCollector);
?>
currentStatus = ["Latest Status:", "<?php echo $currentStatus[0]; ?>", "First Started:", "<?php echo $currentStatus[1]; ?>", "<?php echo $currentStatus[2]; ?>", "Last Checked:", "<?php echo $currentStatus[4]; ?>", "<?php echo $currentStatus[5]; ?>"];
latestGC = "<?php echo $garbageCollector[$garbageCollectorLength - 2] ?>"
}
【问题讨论】:
-
可以用
file_get_contents()代替fopenfread和fclose这三行 -
听起来您在谈论一种服务器推送技术,而 php 做得不太好。您最简单的选择是通过 ajax 定期重新加载状态。
标签: php javascript