Я использую графики флота в реальном времени, и у меня возникают проблемы с обновлением моих значений на графике. У меня есть PHP-код для извлечения значения и сохранения его в переменной, но по мере того как я пришел, чтобы изучить PHP-код rus, прежде чем pnage будет отображаться в браузере, и он снова запускается снова, если я обновляю страницу. Есть ли способ заставить этот PHP-код извлекать значение из файла каждую минуту и построить его?Получайте переменную PHP каждую минуту
Это мой код:
<?php
function act(){
$filename = "(...)/CS.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
return $contents;
};
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://static.pureexample.com/js/flot/jquery.flot.min.js"></script>
<script type="text/javascript" src="http://static.pureexample.com/js/flot/jquery.flot.time.js"></script>
<script type="text/javascript" src="http://static.pureexample.com/js/flot/jquery.flot.axislabels.js"></script>
<!-- CSS -->
<style type="text/css">
#flotcontainer {
width: 95%;
height: 95%;
text-align: center;
margin: 0 auto;
}
</style>
<!-- Javascript -->
<script>
function cs() {
var val = <?php echo act(); ?>;
return val;
};
var data = [];
var dataset;
var totalPoints = 50;
var updateInterval = 1000;
var now = new Date().getTime();
function GetData() {
data.shift();
while (data.length < totalPoints) {
var y = cs();
var temp = [now += updateInterval, y];
data.push(temp);
}
}
var options = {
series: {
lines: {
show: true,
lineWidth: 1.2,
fill: true
}
},
xaxis: {
mode: "time",
tickSize: [2, "second"],
tickFormatter: function (v, axis) {
var date = new Date(v);
if (date.getSeconds() % 20 == 0) {
var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
return hours + ":" + minutes + ":" + seconds;
} else {
return "";
}
},
axisLabel: "Horas",
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelFontFamily: 'Verdana, Arial',
axisLabelPadding: 10
},
yaxis: {
min: 0,
max: 300,
tickSize: 5,
tickFormatter: function (v, axis) {
if (v % 10 == 0) {
return v + "";
} else {
return "";
}
},
axisLabel: "Número de CS's",
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 12,
axisLabelFontFamily: 'Verdana, Arial',
axisLabelPadding: 6
},
legend: {
labelBoxBorderColor: "#fff"
}
};
$(document).ready(function() {
GetData();
dataset = [
{ label: "CS's", data: data }
];
$.plot($("#flotcontainer"), dataset, options);
function update() {
GetData();
$.plot($("#flotcontainer"), dataset, options)
setTimeout(update, updateInterval);
}
update();
});
</script>
<!-- HTML -->
<div id="flotcontainer"></div>
Вы можете использовать [Ajax] (http://api.jquery.com/jQuery.ajax/) для этого. – Ibu
Нет никакой возможности обновлять значения php каждую минуту без перезагрузки страницы. Но JavaScript может запрашивать php для значения через ajax каждую минуту без перезагрузки страницы. –
Я читал об этом, но так как я не знаю Ajax, я не могу заставить его работать = \ –