有考网有考网合作机构>西安培训学校>西安新城区英泰移动通信培训
西安新城区英泰移动通信培训
全国统一学习专线 8:30-21:00
位置:有考网 > 计算机类 > php开发 > PHP导出数据为什么有时会超时?  正文

PHP导出数据为什么有时会超时?

发布时间:2021-09-01 14:48:54来源:转载

PHP 能做很多事情。PHP 主要是用于服务端的脚本程序,因此可以用 PHP 来完成任何其它的 CGI 程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收 Cookies。那么,PHP导出数据为什么有时会超时?

一般情况下,导出超时可能都是以下三种情况

一、sql语句复杂,查询时间过长;

二、处理查询后数据逻辑冗余;

三、数据量过大导致响应超时。

优化建议

一、sql语句复杂,查询时间过长

1、查看索引是否设置妥当,即所用的查询条件是否有添加索引,当然索引不是越多越好,只需给常用的查询条件加上即可,一般采用B+树的索引方式(具体原因可自行百度,不再赘述)

2、在查询语句中尽量避免IN、NOT IN、IS NULL、OR、!=、<>、LIKE、OR、NOT EXISTS这些查询条件的出现,会导致索引失效。

IN查询时,可以考虑用BETWEEN来代替

LIKE查询时,仅当"%"在前时会索引失效,"%"在后是不会失效的

查询条件里还要避免数字的出现,使用字符串,数字也会导致索引失效,例如,查询:"pid"=1,可以优化为"pid"="1"

要尽量避免在循环中使用查询语句,这种情况一般可以用join或者with来解决(当涉及到跨库时,请谨慎使用这种方式!)

查询时,可以指定需要查询的字段,排除掉不需要的字段避免资源浪费

当数据量多大时,可以使用分页和缓存来优化(具体方法请参考数据量过大导致响应超时部分)

二、处理查询后数据逻辑冗余

在做数组循环时,尽量使用continue、break来减少没必要的循环;

尽量减少if嵌套层数,在需要用到多个if-else时,使用switch可以提率,特别是在数据量大时

三、数据量过大导致响应超时

当数量两过大,又不想用异步的方式导出excel文件时,可以尝试使用csv来作为到处格式,且查询导出数据时可以使用分页的方式查询,导出时利用ob_flush进行缓存。

当数据访问次数过多时,建议使用redis缓存一些固定数据,减少mysql查询次数。

相关内容: php开发 PHP导出数据超时 PHP

同类文章
相关热词