Se vc está montando o array para depois iterar sobre ele e está estourando a
memória, pense na possibilidade de não montar este array, e sim iterar
diretamente sobre os devedores e dele procurar os anos que ele está devendo,
no final da iteração vc tira esse índice do array da memória....

[]'s

2011/1/14 Rafael V. de Oliveira <[email protected]>

> Olá a todos.
>
> É meio OFFTOPIC (acho que estou a ficar pró em OFFTOPIC).
>
> Aqui temos uma aplicação com o CI 1.7.2 que faz a gestão de sócios de uma
> espécie de associação.
> Os tugas têm uma base com 50mil sócios. E todos "deveriam" pagar uma quota
> anual.
> Ok, tudo muito bom, tudo muito bem.
>
> Uma das coisas que a aplicação faz é gerar um relatório dos associados que
> não pagaram a quota de determinado ano.
> Eu tenho uma tabela onde constam os pagamentos. Nesta tabela tem a data do
> pagamento, o ano da quota (quando aplicável, há caso em que o associado faz
> donativos ou compra merdas deles) e o valor.
> Depois de quebrar um pouco a cabeça, consegui pegar os "caloteiros" por um
> determinado período de tempo.
> Por exemplo:
> De 2008 à 2010 (botão de submit do form)
> Resultados
> 2008    22.700 quotas NÃO pagas
> 2009    26.300 quotas NÃO pagas
> 2010    31.200 quotas NÃO pagas
>
> Este relatório deve ser exportado para um formato de impressão. Esta
> exportação serve basicamente para enviar cartas de cobrança para o pagamento
> das quotas em atraso.
>
> Um Manuel pode dever 2008, 2009 e 2010. Então neste relatório vai aparecer
> o nome dele juntamente com os anos que o mesmo não pagou e o valor para
> quitar a dívida.
>
> Porém aqui está a arrebentar a memória do servidor. E já está definida para
> 96Mb para o PHP.
>
> Muito antes da exportação para o PDF (estou a utilizar o domPDF) esse
> estouro já acontece. No ponto que arrebenta, o PHP está a trabalhar com
> 31.279 registros.
> O que fiz vou mais ou menos assim
> $atraso[*id_socio*][*ano_quota*]
> Ex:
> $atraso[1320][2008]
> $atraso[1320][2009]
> $atraso[1320][2010]
> Considerando que o 1320 é o id do Manuel caloteiro. Com essas informações
> eu sei quem é o devedor e quanto ele deve, por ano e por total.
>
> Quando entro no foreach, dá o erro. Eu preciso percorrer o array pois tenho
> que recuperar as informações de morada, patente (99% dos sócios foram
> militares e teimam em usar a patente de guerra deles). Creio que consigo dar
> a volta ao problema, é que numa sexta-feira final do dia eu não penso,
> simples assim.
> Tenho minhas dúvidas de quando for fazer a exportação para o PDF o erro vai
> aparecer. Seria um PDF de 30mil páginas :'(
>
> O que gostaria dos nobres colegas da nobre lista sobre o nobre framework é
> de dicas/sugestões/macumbas/velas acesas.
>
> Eu estou a pensar em paginar a exportação. Mas isso vai dar um trabalho do
> car*lho. Teria que salvar numa tabela de impressões, sei lá, o que já foi
> impresso e tal. Mas evidentemente estou com a cabeça 100% aberta para
> sugestões. Se for sugestões que impliquem menos trabalho, melhor ainda :D
>
> Um abraço para os manos e beijinhos para as minas (até hoje não vi
> nenhuma).
> Rafael
> _______________________________________________
> [email protected]
> http://www.codeigniter.com.br
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
>



-- 
Felipe Djinn
Programador de Sistemas
felipedjinn.com.br
twitter.com/FelipeDjinn
skype: felipedjinn
_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a