提问人:Prido1024 提问时间:11/13/2023 最后编辑:Prido1024 更新时间:11/13/2023 访问量:80
由于花费太多时间,无法在 CodeIgniter 3 中加载数据及其计数
Cannot load data and its count in CodeIgniter 3 because of taking too much time
问:
我的网站中有一个页面,其中显示了一个包含数据总数的数据表。可以在表中筛选数据,筛选数据时,计数可能会更改以匹配正在筛选的数据。数据是从 Oracle DB 视图获取的,其中有 20000+,但该表仅显示前 10 个数据。
为了显示计数和数据本身,我使用了数据模型中的 2 个独立方法,让我们将它们称为 和 。在控制器的方法中,首先被调用并返回数据的计数,然后被调用并返回 10 个要显示的数据。count_data
get_data
count_data
get_data
<?php
class Record extends CI_Controller
// ...
function show_table() {
// ...
$recordCount = $this->record_model->count_data(/* arguments */);
// ...
$recordData = $this->record_model->get_data(/* arguments */);
// ...
}
// ...
}
问题是,每次我尝试加载页面时,数据都不会加载。它只会在 20 秒内返回有关互联网连接的错误消息。当我尝试修改以返回硬编码值时,它起作用了,但即使是数据也需要大约 20 秒才能加载。count_data
我尝试了很多方法来使我的数据加载到我的页面中。我尝试在system/core/CodeIgniter.php的脚本中添加此脚本
if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
{
@set_time_limit(300);
}
我已经在我的控制器上添加了 和。我也遵循了这个答案,像这样更改了 CodeIgniter 的查询ini_set('max_execution_time',0)
set_time_limit(0)
$this->load->database();
$this->db->from($this->view);
$count = $this->db->count_all_results();
$this->db->close();
return $count;
像这样原生
$this->load->database();
$result = $this->db->query($query)->result_array();
$count = $result[0]["TOTAL"];
$this->db->close();
return $count;
但它一直在失败。它仍然在 20 秒内返回错误并且没有数据。
请帮帮我,我的解决方案用完了。
编辑:
我怀疑这与以下事实有关:
- 它有 79 列。
- 它不是具体化视图,因此无法编制索引。
这是因为数据库中还有其他视图和表的行数比我的视图多,但其数据的获取速度要快得多,不到 5 秒。视图的列数最多是我视图的 1/2,而表有索引。
答: 暂无答案
评论
exit($this->record_model->count_data(......));
$recordCount = exit($this->record_model->count_data(/* arguments */));
exit()
$this->view