PHP 导出 万级别数据 时间测试
// 设置php可使用内存
ini_set("memory_limit", "1024M");
//设置执行时间最大值
set_time_limit(0);
//引入phpexcel类
Vendor('PHPExcel.PHPExcel', '', '.php');
$objPHPExcel = new \PHPExcel();
//设置内创表
$objPHPExcel->setActiveSheetIndex(0);
//设置表头
$objPHPExcel->getActiveSheet()->setCellValue('A1', "客户姓名")
->setCellValue('B1', "性别");
/**
* 左对齐与 右对齐
* 可设置整列->getStyle('N') 可针对行rows设置getStyle('N3')
*/
$objPHPExcel->getActiveSheet()->getStyle('N')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('N3')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
//50000条数据,excel表 15个字段
$arrays = M('user')->order('id desc')->limit(50000)->select();
if (!empty($arrays)) {
foreach ($arrays as $key => $value) {
$keys = $key + 2;
$column = "";
for($i = 0;$i<15;$i++){
$column = chr(ord("A") + ($i));
// die;
// $objActSheet->getStyle($column . ($i + $Cellkey))->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$objPHPExcel->getActiveSheet()->setCellValue($column . $keys,$value['realname']);
}
}
} else {
echo '暂无数据';
die;
}
$objPHPExcel->getActiveSheet()->setTitle('导出表名称');
//执行时间
$callStartTime = microtime(true);
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//$path = './Public/execTemaplate/'.'111'. '.xlsx';
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
echo date('H:i:s'), ' 导出时间 ', sprintf('%.4f', $callTime), " 秒","<br>";
}
PHP 用来做 excel 导出,本身就有着限制。通常遇到的问题 一般就是 服务器超时,内存溢出等。该例子只测试了 1-5万级别的 数据导出。下一个测试 分页导出10万以上数据。
更多相关文章
- 纯真ip数据库查询的php实现(补充分组查询)
- 数据库是存储我的Web应用程序数据的最佳选择吗?
- php执行数据库查询返回json格式数据
- PHP更新基于其他表的表数据
- 解决PHP导出大量数据时设置超链接的问题
- 如何用jQuery AJAX调用发送所有当前的post数据
- 如何在mysql中配置区分大小写的数据库标识符
- 根据网址上的国家/地区将用户重定向到正确的数据库,我使用i18n fo
- ThinkPHP连接主从数据库