我有http://pastebin.com/4NYvuaB0这个视图,结果如下:
第一个foreach迭代项目 第二次迭代Hitos(一个项目有一个或多个Hitos) 第三次迭代Tareas(One Hito有零,一个或多个tareas)
它工作正常,但渲染视图大约需要120秒,这太多了!
有人知道如何加快速度吗?
提前致谢。
答案 0 :(得分:1)
你应该限制使用类$ semaforo利用css
更改范围属性,您现在拥有的范围有点令人困惑:
function semColor($p) {
$semValues = array('rojo','berde','amarillo','naranja','rojo');
$ranges = array(-1,50,70,100);
for ($i=0; $i<4;$i++)
if ($ranges[$i]>$p['desv']) break;
return $semValues[$i];
}
使用模板创建行
/* use any other method to create the template string */
$templ = '<div class="%s %s"><ul><li class="thmas"> <a href="#" class="trigger2"> </a></li>'
. '<li class="'
. join('">%s </li><li class="',
array_merge(array('','th1','th2','th3','th5','th4','th6'),
array_fill(0,12,'thmes'),
array('thtotal','thtotal)
)).'">%s </li></ul></div>';
内部循环的代码变为:
foreach ( $aTareak as $a ) {
if (($a['proyecto_id']==$h['proyecto_id']) && ($a['hito_id']==$h['hito_id'])) {
printf($templ,
'divtrtarea',
semColor($a['desv'])
$a['categoria_nombre'],
$a['coordinador_nombre'],
$a['tarea_nombre'],
$a['total_prev'],
$a['total_horas'],
round($a['desv'], 2),
$a['1'], $a['2'], $a['3'], $a['4'], $a['5'], $a['6'],
$a['7'], $a['8'], $a['9'], $a['10'], $a['11'], $a['12'],
array_sum(array_slice($a,1,12)), /* assuming they are consecutive */
$html->link('Selec.',array(
'controller'=>'lineas',
'action'=>'addhoras',
$a['proyecto_id'],
$a['hito_id'],
$a['tarea_id'])
)
);
}
}
外部的必须相应改变
答案 1 :(得分:0)
目前尚不清楚 $ proiektuak 的来源。
您想一次显示多少行? 如果很多,试着限制它们。
如果我们知道瓶颈出现在哪里,那么建议会更容易。