php - AJAX请求完成请求时间过长

标签 php mysql ajax json codeigniter-2

我有一个获取 17000 行的 MySQL 查询。如果我使用 Putty 在 MySQL 终端中直接执行该查询,则需要 17 ~ 20 秒才能获取所有行。这可以。

但是当我尝试使用带有 AJAX 请求的 PHP 执行查询时,完成请求需要 50 ~ 60 秒,即使这个查询被缓存了。

我正在使用 CodeIgniter PHP 框架进行缓存及其 AJAX 请求。

我同意,与在终端中直接执行 MySQL 查询相比,HTTP 请求和 PHP 执行可能需要一些时间。

MySQL 直接查询执行:20 秒 使用 HTTP、php、Codeigniter 和 JSON 格式并缓存:60 秒。

估计时差太长了。

我正在尝试执行的模型查询:

mysql> explain SELECT col1, col2, col3, col4, IFNULL(col5,'N/A') AS 'col55', `col6`, col7, col8, col9 FROM table1 LEFT JOIN table1 ON table1.fkid_colid=`voyage id` AND table1.alias_type='voyage_display' WHERE column10='voyage';
+----+-------------+--------------+------+-------------------------------------+---------+---------+------------------------------------+-------+-------------+
| id | select_type | table        | type | possible_keys                       | key     | key_len | ref                                | rows  | Extra       |
+----+-------------+--------------+------+-------------------------------------+---------+---------+------------------------------------+-------+-------------+
|  1 | SIMPLE      | table1       | ALL  | NULL                                | NULL    | NULL    | NULL                               | 37770 | Using where |
|  1 | SIMPLE      | table1       | ref  | PRIMARY,fk_table1_colid_idx         | PRIMARY | 4       | database.table1.column ID |     1 | Using index |
+----+-------------+--------------+------+-------------------------------------+---------+---------+------------------------------------+-------+-------------+
2 rows in set (0.00 sec)

对这个较长的加载时间有什么想法吗?如果您为此建议任何优化技术,将会是什么?

最佳答案

是的。我刚刚通过分析 Controller 功能发现了这个问题。

根据 Codeigniter 分析结果如下,

Controller 执行时间:27.7074 秒。

然后我查看了 Chrome 控制台以了解完成请求所花费的时间,由此我知道了一个问题。

Stalled : 17.32 s
DNS Lookup: 1.000 ms
Initial connection  :262.000 ms
Request/Response        TIME
Request sent    0
Waiting (TTFB)  1.03 s
Content Download    29.84 s
Total time: 48.46 s

从报告来看,最大的问题是“停滞”时间。耗时 17.32 秒。这是由于我方的代理问题而发生的,这是无法避免的,也不会在我的客户方发生。所以可以忽略不计。

所以,

直接查询执行17~20秒

浏览器端Ajax请求内容下载:29~30秒。

所以 3MB 内容下载的时间差是 10 秒,我的客户被接受了:)

感谢您的回复。

关于php - AJAX请求完成请求时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30323142/

相关文章:

Mysql 的 Express 查询返回 null

javascript - 为什么我的ajaxForm的成功函数没有被调用?

PHP 代码气味检测器

PHP:自定义框架还是现有框架?

C#主页相关问题。 (请求。查询字符串 ["id"])

javascript - 在 $(document).keypress 函数中使用 $.ajax 后获取非法调用

jquery - 在 Shopify 中使用 AJAX 添加到购物车

php - 在 PHP 中将包含空字节的字符串(PNG 图像)写入 MySQL

javascript - ckeditor Mathml 插件安装

javascript - Highcharts 无法通过 AJAX 运行