2010-10-11 6 views
0

J'ai une fonctionnalité de génération de rapport. Exporter vers csv ou txt. Pour chaque mois, il y aura 25000 enregistrements par ligne avec 55 colonnes. Pour l'année ce sera plus de 300000 !! j'essaie d'ajouter la limite de mémoire, mais je ne pense pas que c'est bon !! Quoi qu'il en soit maintenant ses 128M.Processus php - l'un après l'autre - Simulation de l'enfilage

Mon attente

Je vais partager la plage de dates sélectionnée par l'utilisateur dans une plage de 25 jours ou 30 je vais courir chercher des données pendant 25 jours, puis écrire le csv. Ensuite, récupérez le 25000 suivant, écrivez cela. comme ça.

Comment puis-je l'atteindre?

pour aller chercher une fonction je utilise $result= fetchRecords();

Pour l'écriture csv, je passe ce tableau $ result pour afficher la page et en boucle et par l'impression par des virgules séparer le Nuevo am.

Donc, dans le contrôleur, il sera $template->records=$result;

Si je le fais dans une boucle

for(){ 
    $result= fetchRecords(); 
    $template->records=$result; 
} 

Je ne hink cela fonctionnera.

Comment faire? exécutez fetch.write puis récupérez puis écrivez.

Pouvez-vous s'il vous plaît suggérer une meilleure façon de mettre en œuvre cela en PHP en le gardant en mémoire limt?

+0

Si ce sont des données historiques, avez-vous pensé à préparer/mettre en cache des rapports? À moins que les utilisateurs puissent demander des rapports aléatoires, il n'est pas nécessaire de traiter toutes les lignes encore et encore .... – Wrikken

+0

C'est comme les données historiques seulement. En quoi la mise en cache est-elle utile? – zod

+0

Si vous êtes simplement prêt à partir d'une base de données et que vous écrivez dans un fichier CSV, vous pouvez envisager une autre langue. PHP n'est * pas * un excellent langage pour le traitement de texte. – meagar

Répondre

0

Je récupérais une énorme quantité de données de db vers un tableau. Puis bouclez à nouveau ce tableau pour écrire dans csv ou text.That était vraiment tuer la mémoire. Maintenant, comme j'obtiens des données de DB, dans cette même boucle j'écris dans le dossier. Aucune utilisation du tableau. Grande différence PHP peut mieux exporter vers csv ou texte. PHP est vraiment un bon langage.

Maintenant je télécharge un csv de 25 mb. :) je casse l'excel .. car il dépasse 65550 enregistrements. :)

Plus que suffisant pour moi. Ainsi, la leçon apprise est: N'utilisez pas de tableaux pour ce type de stockage de données volumineuses.