直接修改$cfg['export']配置可显著优化导出性能:启用事务(sql_use_transaction=true)和禁用外键检查(sql_disable_fk=true),强制gzip压缩、调高执行时限(exectimelimit=600)与内存限制(memorylimit='512m'),并合理设置字符集与分片大小(max_dump_size=50mb),二者需协同生效。
直接改 $cfg['export'] 相关配置项,能显著减少超时、内存溢出和导出文件体积,尤其在处理大库时效果立竿见影。
导出时启用事务和禁用外键检查
默认导出不开启事务,遇到大表容易中断;外键约束也会拖慢写入速度。这两个开关必须手动打开:
-
$cfg['Export']['sql_use_transaction'] = true;:确保导出 SQL 文件中每张表的数据包裹在BEGIN/COMMIT中,避免部分写入失败导致数据不一致 -
$cfg['Export']['sql_disable_fk'] = true;:跳过SET FOREIGN_KEY_CHECKS=0以外的额外校验逻辑,实测可提速 20%~35% - 注意:若目标库依赖外键强一致性,导入前需手动补上
SET FOREIGN_KEY_CHECKS=1;
强制启用压缩并调大 PHP 执行限制
导出未压缩的 SQL 文件动辄几百 MB,不仅耗内存还易超时。光靠前端勾选“gzip”不够,得配合后端资源上限:
-
$cfg['Export']['compression'] = 'gzip';:生成 .sql.gz 而非纯文本,体积通常缩小 70% 以上 -
$cfg['ExecTimeLimit'] = 600;:把默认 300 秒延长到 10 分钟,防止导出中途被 PHP 中断 -
$cfg['MemoryLimit'] = '512M';:配合php.ini中的memory_limit,避免因内存不足直接报Fatal error: Allowed memory size exhausted
调整字符集与分段策略防乱码和崩溃
快速导出默认用 utf-8,但若数据库含 gbk 或 latin1 字段,不显式指定会导致导出内容错乱或截断:
-
$cfg['Export']['charset'] = 'utf-8';:保持默认即可,除非明确对接旧系统(如设为'gbk') -
$cfg['Export']['max_dump_size'] = 50 * 1024 * 1024;(即 50MB):强制分片导出,避免单次生成超大字符串撑爆内存;该值需略小于 PHP 的memory_limit - 不要依赖界面“自定义导出”里临时选编码——它只影响当次操作,
$cfg['Export']['charset']才决定所有快速导出的行为
真正容易被忽略的是 $cfg['Export']['max_dump_size'] 和 $cfg['Export']['sql_use_transaction'] 的组合效果:前者控制内存峰值,后者保障分片间事务完整性。没设前者,启后者反而更容易因单片过大而崩;只设前者不启后者,分片之间就失去原子性。两者必须一起配。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











