PHPExcel lendo arquivos grandes

Olá. Boa tarde

Estou com problemas no uso da PHPExcel quando leio um XLSX grande. Para arquivos menores não tenho problemas.

Sc 9.0.004 - PHP 7 tanto no desenvolvimento quanto na produção
servidor windows server 2012
BD MSSQL 2014

O upload vai bem. A velocidade de upload não chega a impactar. Meu arquivo teste tem 35 megas. Os tamanhos vão variar por volta disso muitas vezes em produção. Por isso preciso testar com arquivo deste tamanho.

Mas quando começa a processar eu monitoro o servidor e o uso de memória vai subindo até atingir 100% e trava. Então tenho que reiniciar o servidor.

Pelo que vi nas pesquisas o PHPExcel é uma excelente biblioteca mas usa muita memória.
https://stackoverflow.com/questions/16667376/phpexcel-memory-still-exhausted-even-with-cell-caching-other-solutions

Inclusive vendo a documentação uso:

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

Para tentar fazer com que o PHPExcel use cache em disco e não em memória. Mesmo assim o resultado foi o mesmo.

Nas minhas pesquisas encontrei o Spout. Uma biblioteca que se fizer o que promete resolve meu problema. (veja no link). No entanto não consegui usar fazendo o que a documentação manda. Já adicionei bibliotecas de terceiros mas essa está difícil de eu conseguir funcionar com o SC.

http://opensource.box.com/spout/

Então meus questionamentos são:

  1. Alguém teve problemas de memória usando PHPExcel na importação de arquivos grandes ?
  2. Alguém já ouviu falar do SPOUT ? No fórum scriptcase.net tem alguma coisa mas não tive respostas ainda.
  3. Alguém poderia me ajudar a pelo menos fazer essa Spout funcionar para que eu possa saber se resolve ou nao ?

Obrigado
Jairo

Tente Otimizar o Servidor assim:

Grave os arquivos originais antes de alterar, caso quiser voltar.

php:
C:\Program Files\NetMake\v9\components\php\php.ini
zlib.output_compression_level = 1
memory_limit = 3072M
max_input_vars=20000
output_buffering = 16384

max_execution_time = 7200
max_file_uploads = 1000

apache:
C:\Program Files\NetMake\v9\components\apache\conf\httpd.conf

FcgidInitialEnv PHP_FCGI_MAX_REQUESTS “300000”

FcgidIOTimeout 3600
FcgidBusyTimeout 3600
FcgidConnectTimeout 3600
FcgidMaxRequestLen 1073741824
FcgidMaxRequestsPerProcess 100000
FcgidOutputBufferSize 20480
FcgidProcessLifeTime 3600

Timeout 2048
KeepAlive On
KeepAliveTimeout 300
MaxKeepAliveRequests 800

Desativar Excluir da checagem do seu (Anti-vírus/Windows Defender) a pasta da Netmake e Downloads:

*** Reiniciar o PC após todos os procedimentos.

Configurar no Menu Administrativo do SC:
Meu I5 = Usa 6 COMPILADORES
I7 = Pode usar 10 COMPILADORES