Solution to memory overflow error when phpExcel exports large amounts of data_PHP Tutorial

WBOY
Release: 2016-07-21 15:13:08
Original
737 people have browsed it

phpExcel saves the read cell information in memory, we can pass

Copy code The code is as follows:

PHPExcel_Settings::setCacheStorageMethod()

To set different caching methods, the purpose of reducing memory consumption has been achieved!

1. Serialize the cell data and save it in memory

Copy code The code is as follows:

PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;

2. Serialize the cells and then Gzip compress them, then save them in memory

Copy code The code is as follows:

PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;

3. Caching in temporary disk files may be slower

Copy code The code is as follows:

PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;

4. Save in php://temp

Copy code The code is as follows:

PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;

5. Save in memcache

Copy code The code is as follows:

PHPExcel_CachedObjectStorageFactory::cache_to_memcache

Example:

Medium 4:

Copy code The code is as follows:

$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( ' memoryCacheSize ' => '8MB'
);
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

Type 5:

Copy code The code is as follows:

$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache;
$cacheSettings = array( 'memcacheServer ' => 'localhost',
'memcachePort' => 11211,
'cacheTime' => 600 );
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

Other methods

The first method, you can consider generating multiple sheets. You don’t need to generate multiple excel files. Calculate how many rows each sheet exports based on the total amount of your data. The following is how PHPExcel generates multiple sheets:

The following is how PHPExcel generates multiple sheets:

Copy code The code is as follows:
$sheet = $objPHPExcel->getActiveSheet();
$sheet- >setCellValue('A1',$x);
$sheet->setCellValue('B1',$y);

For the second method, you can consider ajax to export in batches without refreshing the page every time.

Copy code The code is as follows:

export to Excel
$('#export').click(function() {
$. ajax({
url: "export.php",
data: getData(), //You can also get this in php, usually read the database
success: function(response){
                 window.location.href = response.url; 
                                      


Copy code

The code is as follows:

//export.php $data = $_POST['data'];
$xls = new PHPExcel();
$xls->loadData($formattedData);
$xls->exportToFile('excel.xls');
$response = array(
'success' => true,
'url' => $url
);
header('Content-type: application/json') ;
echo json_encode($response);
?>



If the amount of data is large, it is recommended to use the second method, ajax, to export the data. The above method simply gives a process, you can add the details yourself!

http://www.bkjia.com/PHPjc/326554.html

www.bkjia.com

truehttp: //www.bkjia.com/PHPjc/326554.htmlTechArticlephpExcel saves the read cell information in memory. We can copy the code as follows: PHPExcel_Settings:: setCacheStorageMethod() to set different caching methods, has reached...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!