Не лучше ли с точки зрения эффективности было бы делать 1 SQL запрос с времени start_time до времени end_time, а потом в цикле формировать DataSet? Вместо 2000 запросов будет всего 10.
Надо то всего написать один запрос и переписать цикл.
Код: Выделить всё
if ($total>0) {
$px=0;
$px_passed=0;
$dt=date('Y-m-d', $start_time);
while($start_time<$end_time) {
$ph=SQLSelectOne("SELECT ID, VALUE FROM phistory WHERE VALUE_ID='".$pvalue['ID']."' AND ADDED<=('".date('Y-m-d H:i:s', $start_time)."') ORDER BY ADDED DESC LIMIT 1");
if ($ph['ID']) {
$values[]=(float)$ph['VALUE'];
} else {
$values[]=0;
}
if ($px_passed>40) {
if (date('Y-m-d',$start_time) != $dt) {
$hours[] = date('d/m',$start_time);
$dt = date('Y-m-d',$start_time);
} else {
$hours[] = date('H:i',$start_time);
}
$px_passed=0;
} else {
$hours[]='';
}
$start_time += $period;
$px += $px_per_point;
$px_passed += $px_per_point;
}
$DataSet->AddPoint($values,"Serie1");
$DataSet->AddPoint($hours,"Serie3");
} else {
$DataSet->AddPoint(0,"Serie1");
$DataSet->AddPoint(0,"Serie3");
}