我有一个用 CakePHP 1.2 版编写的应用程序,由于对数据库的查询繁重且未优化,因此速度非常慢,这是 deleas 的一个示例:
$pedidos_entregas = $this->Pedido->query('select pedidos.*, lojas.*, pessoas.*, formas_pagamentos.* from pedidos inner join veiculos_periodos
on pedidos.veiculos_periodo_id = veiculos_periodos.id inner join lojas
on veiculos_periodos.loja_id = lojas.id inner join pessoas
on pessoas.id = pedidos.pessoa_id inner join formas_pagamentos
on pedidos.formas_pagamento_id = formas_pagamentos.id
where
(finalizado = 1 or pedidos.id in
(
select pedido_id from status_pedidos where statu_id = 11
)
) order by entrega desc limit 200;');
缓存应用了 30 分钟,大大提高了网站性能。但是,在 30 分钟后,其中一位用户将不得不缓慢地查看页面,以再次填充缓存。
我捕获了完成每个缓存访问控制器包含的缓存使用的剩余时间。
$vencimento = file_get_contents(CACHE . 'cake_siv_financeiro_pedidos_entregas');
$vencimento = explode("\n", $vencimento);
$vencimento = $vencimento[0];
$agora = strtotime('now');
$faltam = ($vencimento - $agora)/60; //remaining time
echo $faltam;
为此,在缓存30分钟之前获胜,当丢失10分钟或更少时,例如,如果有人访问该页面,则缓存已经被再次更新。
但是,用户仍将不得不缓慢地查看页面,因为必须完成查询。
我的问题是:在为用户呈现视图后如何执行某些功能?我想做这样的事情,但这不起作用
public function afterFilter()
{
parent::afterFilter();
//$this->atualizar_log();
$saida = $this->output;
$this->output = "";
ob_start();
print $saida;
flush();
ob_end_flush();
//I need that sleep after html returned to browser
sleep(500);
}
我有第二个问题,说我有一张桌子亮片:
表 人 id (PK) 姓名 年龄 1 bob 20 2 ana 19 3 maria 50
我运行以下 sql
UPDATE people SET age = 20 where id <3
这将影响 ID 行 1 和 2。在 CakePHP 中,如何在更新后获取受影响的 ID?(1和2)???
当我删除现有缓存时,这是必要的;