私はいくつかのデータを収集し、それを SQLite データベースに入れる組み込み Linux システムの魔女を持っています。新しいデータは毎秒追加されます。このデータをデータベースから取得し、highchart
. したがって、毎秒新しいポイントをチャートに追加する必要があります。
次の例を出発点として使用しました: http://www.highcharts.com/studies/live-server.htm
動作しますが、ページにアクセスすると、CPU が 50% 使用されます (私はクロムを使用しています)。モージグラフをプロットしても 100% です。ライブ サーバーの例でも、CPU 使用率が上昇していることがわかります。アンサーを探してみましたが、何も見つかりませんでした。これが最善の方法ですか?またはこれはバグですか、それとも何か不足していますか? これが私のコードの一部です:
function request_accu_Data() {
$.ajax({
url: 'live-accu-data.php',
success: function(point) {
var accu_series = accu_chart.series[0];
shift = accu_series.data.length > 100; // shift if the series is longer than 100
// add the point
accu_chart.series[0].addPoint(eval(point), true, shift);
// call it again after one second
setTimeout(request_accu_Data, 500);
},
cache: false
});
}
$(document).ready(function() {
accu_chart = new Highcharts.Chart({
chart: {
renderTo: 'Accu_graph_container',
defaultSeriesType: 'spline',
events: {
load: request_accu_Data
}
},
tooltip: {
formatter: function() {
return false;
}
},
title: {
text: 'Accu level'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 150,
maxZoom: 20 * 1000
},
yAxis: {
minPadding: 0.9,
maxPadding: 0.9,
min: 0,
max: 100,
title: {
text: '%',
margin: 10
}
},
series: [{
//pointInterval: 3600 * 1000,
name: 'Accu level',
data: [
]
}]
});
php コードは次のようになります。
<?php
// Set the JSON header
header("Content-type: text/json");
$db = new PDO('sqlite:/home/pi/client.db');
$result = $db->query('SELECT * FROM log ORDER BY ROWID DESC LIMIT 1');
foreach($result as $row){
$ret = intval( $row['Timestamp'])*1000;
$ret2= intval( $row['Accu_level']);
}
$tot = array($ret,$ret2);
echo json_encode($tot);
?>
あなたが私を助けてくれることを本当に願っています!