久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網
      最全最豐富的資訊網站

      php導出excel出現500錯誤怎么辦

      php導出excel出現500錯誤的解決方法:使用【PHPExcel_Settings::setCacheStorageMethod()】方法將緩存方式作為參數傳遞給該方法來設置緩存即可。

      php導出excel出現500錯誤怎么辦

      本文操作環(huán)境:windows10系統、php 7、thinkpad t480電腦。

      想必很多小伙伴都遇到過導出excel的問題,也許我們平時在使用phpexcel類時覺得很方便。但是你會發(fā)現在導出大量數據的時候可就沒那么簡單了,往往會導出時會伴隨著一些超時或者內存溢出的問題。下面我們就來一起看看解決方法。

      PHPExcel是一個很強大的處理Excel的PHP開源類,但是很大的一個問題就是它占用內存太大,從1.7.3開始,它支持設置cell的緩存方式,但是推薦使用目前穩(wěn)定的版本1.7.6,因為之前的版本都會不同程度的存在bug。

      PHPExcel 平均下來使用1k/單元格的內存,因此大的文檔會導致內存消耗的也很快。單元格緩存機制能夠允許PHPExcel將內存中的小的單元格對象緩存在磁盤或者 APC,memcache或者Wincache中,盡管會在讀取數據上消耗一些時間,但是能夠幫助你降低內存的消耗。

      默認情況下,PHPExcel依然將單元格對象保存在內存中,但是你可以自定義。你可以使用PHPExcel_Settings::setCacheStorageMethod()方法,將緩存方式作為參數傳遞給這個方法來設置緩存的方式。

      Php代碼:

      $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory; PHPExcel_Settings::setCacheStorageMethod($cacheMethod);

      setCacheStorageMethod()方法會返回一個BOOL型變量用于表示是否成功設置(比如,如果APC不能使用的時候,你設置使用APC緩存,將會返回false)

      每一個worksheet都會有一個獨立的緩存,當一個worksheet實例化時,就會根據設置或配置的緩存方式來自動創(chuàng)建。一旦你開始讀取一個文件或者你已經創(chuàng)建了第一個worksheet,就不能在改變緩存的方式了。

      目前,有以下幾種緩存方式可以使用:

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_in_memory;

      默認情況下,如果你不初始化任何緩存方式,PHPExcel將使用內存緩存的方式。

      ===============================================

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;

      使用這種緩存方式,單元格會以序列化的方式保存在內存中,這是降低內存使用率性能比較高的一種方案。

      ===============================================

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;

      與序列化的方式類似,這種方法在序列化之后,又進行gzip壓縮之后再放入內存中,這會更進一步降低內存的使用,但是讀取和寫入時會有一些慢。

      ===========================================================

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;

      當使用cache_to_discISAM這種方式時,所有的單元格將會保存在一個臨時的磁盤文件中,只把他們的在文件中的位置保存在PHP的內存中,這會比任何一種緩存在內存中的方式都慢,但是能顯著的降低內存的使用。臨時磁盤文件在腳本運行結束是會自動刪除。

      ===========================================================

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;

      類 似cache_to_discISAM這種方式,使用cache_to_phpTemp時,所有的單元格會還存在php://temp I/O流中,只把 他們的位置保存在PHP的內存中。PHP的php://memory包裹器將數據保存在內存中,php://temp的行為類似,但是當存儲的數據大小超 過內存限制時,會將數據保存在臨時文件中,默認的大小是1MB,但是你可以在初始化時修改它:

      Php代碼:

      $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; $cacheSettings = array(’memoryCacheSize’ => ’8MB’ ); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); php://temp文件在腳本結束是會自動刪除。

      ===========================================================

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_apc;

      當使用cach_to_apc時,單元格保存在APC中,只在內存中保存索引。APC緩存默認超時時間時600秒,對絕大多數應用是足夠了,當然你也可以在初始化時進行修改:

      Php代碼:

      $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_APC; $cacheSettings = array(’cacheTime’ => 600 ); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

      當腳本運行結束時,所有的數據都會從APC中清除(忽略緩存時間),不能使用此機制作為持久緩存。

      ===========================================================

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_memcache

      使 用cache_to_memory時,單元格對象保存在memcache中,只在內存中保存索引。默認情況下,PHPExcel會在localhost和 端口11211尋找memcache服務,超時時間600秒,如果你在其他服務器或其他端口運行memcache服務,可以在初始化時進行修改:

      Php代碼:

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

      從初始化設置的形式上看,MS還不支持多臺memcache服務器輪詢的方式,比較遺憾。

      當腳本結束時,所有的數據都會從memcache清空(忽略緩存時間),不能使用該機制進行持久存儲。

      ===========================================================

      Php代碼:

      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培訓

      贊(0)
      分享到: 更多 (0)
      ?
      網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號