久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      php導(dǎo)出excel出現(xiàn)500錯(cuò)誤怎么辦

      php導(dǎo)出excel出現(xiàn)500錯(cuò)誤的解決方法:使用【PHPExcel_Settings::setCacheStorageMethod()】方法將緩存方式作為參數(shù)傳遞給該方法來(lái)設(shè)置緩存即可。

      php導(dǎo)出excel出現(xiàn)500錯(cuò)誤怎么辦

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

      想必很多小伙伴都遇到過(guò)導(dǎo)出excel的問(wèn)題,也許我們平時(shí)在使用phpexcel類(lèi)時(shí)覺(jué)得很方便。但是你會(huì)發(fā)現(xiàn)在導(dǎo)出大量數(shù)據(jù)的時(shí)候可就沒(méi)那么簡(jiǎn)單了,往往會(huì)導(dǎo)出時(shí)會(huì)伴隨著一些超時(shí)或者內(nèi)存溢出的問(wèn)題。下面我們就來(lái)一起看看解決方法。

      PHPExcel是一個(gè)很強(qiáng)大的處理Excel的PHP開(kāi)源類(lèi),但是很大的一個(gè)問(wèn)題就是它占用內(nèi)存太大,從1.7.3開(kāi)始,它支持設(shè)置cell的緩存方式,但是推薦使用目前穩(wěn)定的版本1.7.6,因?yàn)橹暗陌姹径紩?huì)不同程度的存在bug。

      PHPExcel 平均下來(lái)使用1k/單元格的內(nèi)存,因此大的文檔會(huì)導(dǎo)致內(nèi)存消耗的也很快。單元格緩存機(jī)制能夠允許PHPExcel將內(nèi)存中的小的單元格對(duì)象緩存在磁盤(pán)或者 APC,memcache或者Wincache中,盡管會(huì)在讀取數(shù)據(jù)上消耗一些時(shí)間,但是能夠幫助你降低內(nèi)存的消耗。

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

      Php代碼:

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

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

      每一個(gè)worksheet都會(huì)有一個(gè)獨(dú)立的緩存,當(dāng)一個(gè)worksheet實(shí)例化時(shí),就會(huì)根據(jù)設(shè)置或配置的緩存方式來(lái)自動(dòng)創(chuàng)建。一旦你開(kāi)始讀取一個(gè)文件或者你已經(jīng)創(chuàng)建了第一個(gè)worksheet,就不能在改變緩存的方式了。

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_in_memory;

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

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;

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

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;

      與序列化的方式類(lèi)似,這種方法在序列化之后,又進(jìn)行g(shù)zip壓縮之后再放入內(nèi)存中,這會(huì)更進(jìn)一步降低內(nèi)存的使用,但是讀取和寫(xiě)入時(shí)會(huì)有一些慢。

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;

      當(dāng)使用cache_to_discISAM這種方式時(shí),所有的單元格將會(huì)保存在一個(gè)臨時(shí)的磁盤(pán)文件中,只把他們的在文件中的位置保存在PHP的內(nèi)存中,這會(huì)比任何一種緩存在內(nèi)存中的方式都慢,但是能顯著的降低內(nèi)存的使用。臨時(shí)磁盤(pán)文件在腳本運(yùn)行結(jié)束是會(huì)自動(dòng)刪除。

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;

      類(lèi) 似cache_to_discISAM這種方式,使用cache_to_phpTemp時(shí),所有的單元格會(huì)還存在php://temp I/O流中,只把 他們的位置保存在PHP的內(nèi)存中。PHP的php://memory包裹器將數(shù)據(jù)保存在內(nèi)存中,php://temp的行為類(lèi)似,但是當(dāng)存儲(chǔ)的數(shù)據(jù)大小超 過(guò)內(nèi)存限制時(shí),會(huì)將數(shù)據(jù)保存在臨時(shí)文件中,默認(rèn)的大小是1MB,但是你可以在初始化時(shí)修改它:

      Php代碼:

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

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_apc;

      當(dāng)使用cach_to_apc時(shí),單元格保存在APC中,只在內(nèi)存中保存索引。APC緩存默認(rèn)超時(shí)時(shí)間時(shí)600秒,對(duì)絕大多數(shù)應(yīng)用是足夠了,當(dāng)然你也可以在初始化時(shí)進(jìn)行修改:

      Php代碼:

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

      當(dāng)腳本運(yùn)行結(jié)束時(shí),所有的數(shù)據(jù)都會(huì)從APC中清除(忽略緩存時(shí)間),不能使用此機(jī)制作為持久緩存。

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_memcache

      使 用cache_to_memory時(shí),單元格對(duì)象保存在memcache中,只在內(nèi)存中保存索引。默認(rèn)情況下,PHPExcel會(huì)在localhost和 端口11211尋找memcache服務(wù),超時(shí)時(shí)間600秒,如果你在其他服務(wù)器或其他端口運(yùn)行memcache服務(wù),可以在初始化時(shí)進(jìn)行修改:

      Php代碼:

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

      從初始化設(shè)置的形式上看,MS還不支持多臺(tái)memcache服務(wù)器輪詢(xún)的方式,比較遺憾。

      當(dāng)腳本結(jié)束時(shí),所有的數(shù)據(jù)都會(huì)從memcache清空(忽略緩存時(shí)間),不能使用該機(jī)制進(jìn)行持久存儲(chǔ)。

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

      Php代碼:

      PHPExcel_CachedObjectStorageFactory::cache_to_wincache;

      使用cache_towincache方式,單元格對(duì)象會(huì)保存在Wincache中,只在內(nèi)存中保存索引,默認(rèn)情況下Wincache過(guò)期時(shí)間為600秒,對(duì)絕大多數(shù)應(yīng)用是足夠了,當(dāng)然也可以在初始化時(shí)修改:

      Php代碼:

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

      PHPExcel還是比較強(qiáng)大的,最大的問(wèn)題就是內(nèi)存占用的問(wèn)題,PHPExcel啥時(shí)候能出一個(gè)輕量級(jí)的版本,不需要那么多花哨的功能,只需要導(dǎo)出最普通的數(shù)據(jù)的版本就好了!

      推薦學(xué)習(xí):php培訓(xùn)

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)