gpt4 book ai didi

cakephp 分页器非常慢

转载 作者:行者123 更新时间:2023-12-01 14:38:15 25 4
gpt4 key购买 nike

我有一个 cakephp 应用程序 2.4,但我在使用 Paginator 组件时遇到了问题。首先,它不是数据库,它肯定是解析查询结果的执行。我安装了 DebugKit,可以看到我的 mysql 查询分页数据需要整整 2 毫秒。该表有 250 万条消息记录和 500,000 个用户。显然适当的索引已经到位。但是, Controller 操作需要 6167.82 毫秒。所以,这是我的 Controller 操作:

$this->Paginator->settings = array(
'Message' => array(
'fields' => array(
'Recipient.username',
'Recipient.profile_photo',
'Recipient.id',
'Message.*'
),
'joins' => array(array(
'table' => 'users',
'alias' => 'Recipient',
'type' => 'LEFT',
'conditions' => array(
'Recipient.id = `Message`.`recipient_id`'
)
)),
'conditions' => array(
'Message.sender_id' => $this->Auth->user('id'),
'Message.deleted_by_sender' => '0'
),
'limit' => 10,
'order' => 'Message.id DESC',
'recursive' => -1
)
);
$sents = $this->Paginator->paginate( 'Message' );
$this->set( 'sents', $sents );
$this->view = 'index';

我用谷歌搜索并搜索了堆栈溢出。大多数回复都是针对糟糕的 mysql 优化,这不是我的情况。另一半的回复表明是可控的。所以,我尝试了containable。使用 contain 实际上更慢,因为它试图从用户字段中获取比用户名、照片和 ID 更多的数据。然后,当 cake 根据查询结果构建数组时,由于我假设有额外的用户数据,它在 containable 下的执行速度慢了近 500 毫秒。

我现在要深入研究蛋糕分页器组件,看看为什么构建响应需要这么长时间。我希望有人比我早,并且有一个好的解决方案来帮助加快速度。

我的网络服务器正在运行 ubuntu 12.04 和 3gb 内存,apache 和 mod_php 安装了 apc 并为模型和核心缓存工作。数据库位于单独的服务器上。我还有一个 redis 服务器保存其他用户数据和蛋糕 session 数据。这里有足够的能力从包含大约十二行的 mysql 查询中解析 10 条记录。

编辑:回答

正如 Ilie Pandia 首先建议的那样,发生了其他事情,例如回调,这会减慢分页速度。这实际上与分页组件无关。收件人模型有一个行为,即在第 3 方服务的设置回调中加载 sdk。该服务需要几秒钟才能响应。当加载查询中的 linkedModel 以过滤结果时,就会发生这种情况。希望其他寻找 cake 性能不佳原因的人也会查看应用程序和插件中模型的回调。

最佳答案

我看不出有什么理由让它运行缓慢。

因此这表明安装了一些回调(在模型或 Controller 中),它们会执行额外的处理并大大增加操作时间。

这是假设 Controller 中除了您编写的内容之外没有其他内容。

你实际上可以 measure the time分页调用本身,我想你会发现它非常快。所以瓶颈在代码的其他地方。

PS:您也可以尝试暂时禁用 DebugKit。对于某些特定情况,自省(introspection)可能需要很长时间。

关于cakephp 分页器非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21413625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com