What should I do if a 500 error occurs when php exports excel?
Solution to the 500 error when exporting excel in php: Use the [PHPExcel_Settings::setCacheStorageMethod()] method to pass the cache method as a parameter to the method to set the cache.
The operating environment of this article: windows10 system, php 7, thinkpad t480 computer.
I think many friends have encountered the problem of exporting excel. Maybe we usually find it convenient when using the phpexcel class. But you will find that it is not that simple when exporting a large amount of data. The export is often accompanied by some timeout or memory overflow problems. Let’s take a look at the solution below.
PHPExcel is a very powerful PHP open source class for processing Excel, but a big problem is that it takes up too much memory. Starting from 1.7.3, it supports setting the cell cache method, but it is recommended to use the current The stable version 1.7.6, because previous versions have bugs to varying degrees.
PHPExcel uses 1k/cell of memory on average, so large documents will consume memory very quickly. The cell caching mechanism allows PHPExcel to cache small cell objects in memory on disk or in APC, memcache or Wincache. Although it will take some time to read the data, it can help you reduce memory consumption.
By default, PHPExcel still saves cell objects in memory, but you can customize it. You can use the PHPExcel_Settings::setCacheStorageMethod() method and pass the caching method as a parameter to this method to set the caching method.
Php code:
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory; PHPExcel_Settings::setCacheStorageMethod($cacheMethod);
The setCacheStorageMethod() method will return a BOOL variable to indicate whether the setting is successful (for example, if APC cannot be used, and you set to use APC cache, it will Return false)
Each worksheet will have an independent cache. When a worksheet is instantiated, it will be automatically created according to the cache method set or configured. Once you start reading a file or you have created your first worksheet, you cannot change the caching method.
Currently, the following caching methods are available:
Php code:
PHPExcel_CachedObjectStorageFactory::cache_in_memory;
By default, if you do not initialize any caching method, PHPExcel will use the memory cache The way.
============================================== ===
Php code:
PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;
Using this caching method, cells will be stored in memory in a serialized manner, which is a relatively high-performance way to reduce memory usage. plan.
============================================== ===
Php code:
PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
Similar to the serialization method, this method performs gzip compression after serialization and then puts it into the memory, which will further reduce the cost. Memory usage, but there will be some slowness when reading and writing.
============================================== ===============
Php code:
PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;
When using cache_to_discISAM, all cells will be saved in a temporary Disk files, only their location in the file is stored in PHP's memory. This is slower than any in-memory cache, but can significantly reduce memory usage. The temporary disk file will be automatically deleted when the script ends.
============================================== ===============
Php code:
PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
Similar to cache_to_discISAM, when using cache_to_phpTemp, all cells will still have php: //temp I/O streams, only store their positions in PHP's memory. PHP's php://memory wrapper saves data in memory. php://temp behaves similarly, but when the size of the stored data exceeds the memory limit, the data will be saved in a temporary file. The default size is 1MB. , but you can modify it during initialization:
Php code:
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; $cacheSettings = array(’memoryCacheSize’ => ’8MB’ ); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); php://temp文件在脚本结束是会自动删除。
======================== ===================================
Php code:
PHPExcel_CachedObjectStorageFactory::cache_to_apc;
When using cach_to_apc, the cells are saved in APC and only the index is saved in memory. The default APC cache timeout is 600 seconds, which is sufficient for most applications. Of course, you can also modify it during initialization:
Php code:
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_APC; $cacheSettings = array(’cacheTime’ => 600 ); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
When the script ends, All data will be cleared from the APC (ignoring cache time) and this mechanism cannot be used as a persistent cache.
============================================== ===============
Php code:
PHPExcel_CachedObjectStorageFactory::cache_to_memcache
When using cache_to_memory, the cell object is saved in memcache and only the index is saved in memory. By default, PHPExcel will look for the memcache service on localhost and port 11211, with a timeout of 600 seconds. If you run the memcache service on other servers or other ports, you can modify it during initialization:
Php code:
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache; $cacheSettings = array( ’memcacheServer’ => ’localhost’, ‘memcachePort’ => 11211, ‘cacheTime’ => 600 ); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
From the perspective of initialization settings, MS does not yet support the polling method of multiple memcache servers, which is a pity.
When the script ends, all data will be cleared from memcache (ignoring the cache time), and this mechanism cannot be used for persistent storage.
============================================== ===============
Php code:
PHPExcel_CachedObjectStorageFactory::cache_to_wincache;
使用cache_towincache方式,单元格对象会保存在Wincache中,只在内存中保存索引,默认情况下Wincache过期时间为600秒,对绝大多数应用是足够了,当然也可以在初始化时修改:
Php代码:
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_wincache; $cacheSettings = array(’cacheTime’ => 600); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
PHPExcel还是比较强大的,最大的问题就是内存占用的问题,PHPExcel啥时候能出一个轻量级的版本,不需要那么多花哨的功能,只需要导出最普通的数据的版本就好了!
推荐学习:php培训
The above is the detailed content of What should I do if a 500 error occurs when php exports excel?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

AI can help optimize the use of Composer. Specific methods include: 1. Dependency management optimization: AI analyzes dependencies, recommends the best version combination, and reduces conflicts. 2. Automated code generation: AI generates composer.json files that conform to best practices. 3. Improve code quality: AI detects potential problems, provides optimization suggestions, and improves code quality. These methods are implemented through machine learning and natural language processing technologies to help developers improve efficiency and code quality.

Laravel optimizes the web development process including: 1. Use the routing system to manage the URL structure; 2. Use the Blade template engine to simplify view development; 3. Handle time-consuming tasks through queues; 4. Use EloquentORM to simplify database operations; 5. Follow best practices to improve code quality and maintainability.

Configuring and running PHP on IIS requires the following steps: 1) Download and install PHP, 2) Configuring IIS and adding FastCGI module, 3) Create and set up an application pool, 4) Create a website and bind to an application pool. Through these steps, you can easily deploy PHP applications on your Windows server and improve application stability and efficiency by configuring scaling and optimizing performance.

HTML5 brings five key improvements: 1. Semantic tags improve code clarity and SEO effects; 2. Multimedia support simplifies video and audio embedding; 3. Form enhancement simplifies verification; 4. Offline and local storage improves user experience; 5. Canvas and graphics functions enhance the visualization of web pages.
