|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2008 Messages : 30 ![]() |
Bonsoir à tous,
J'ai un script php qui me permet de consulter les logs, cela marche pour les petits fichier (<2M) mais pas pour les gros. Ma question : Quelle est la solution pour un ouvrir un gros fichier ( dépassant les 1 GB ) en php ? (bien évidemment avec traitement par ligne) Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
je dirai que t'es jamais obligé de charger tout ton fichier en memoire... au démarrage de ton appli. sans doute qu'une manipulation de tes données comme un flux 'résoudra' ton besoin.
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Citation:
Citation:
![]() fopen/fgets/fclose devraient suffire.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
||
|
|
00
|
|
|
#4 | |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2008 Messages : 30 ![]() |
J'utilise actuellement la fonction array_reverse(file($file)); car je dois lire les logs de la fin au début et c'est trop trop gourmand en mémoire.
J'ai l'erreur : Citation:
|
|
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : septembre 2010 Messages : 7 104 ![]() |
oui avec fseek + fread, sinon tu lis avec fgets et tu prends que les lignes qui t’intéresses
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2008 Messages : 30 ![]() |
J'ai essayé avec fread et toujours le même problème de mémoire...
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1975602547 bytes) in /var/site/track.php on line 100 |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : septembre 2010 Messages : 7 104 ![]() |
parce que tu met touts dans une variable, montre ce que t'as fait
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#8 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : août 2008 Messages : 30 ![]() |
Apparemment ça marche avec ce code
:Code :
Mais je plante avec fseek pour lire le fichier à l'envers ? |
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Tu as des exemples d'utilisation dans la doc http://fr.php.net/fseek
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2008 Messages : 30 ![]() |
Désolé mais je plante toujours (même avec la doc), pourriez-vous me donner un exemple avec mon code ?
|
|
|
00
|
|
|
#11 | |||
|
Membre du Club
![]() |
Tu peux essayer avec la SPL, et plus particulièrement la classe SplFileObject,
qui te permet de boucler sur le contenu d'un fichier via foreach (interface Iterator & SeekableIterator), et bien plus, voir ce tuto: http://gooh.posterous.com/iterating-files-with-spl Citation:
__________________
TheLab, being a software developer, & more |
|||
|
10
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2008 Messages : 30 ![]() |
Vraiment les autres ont tendance de "nature" à vouloir compliquer les choses ? Vas savoir pourquoi...
Merci Sylvain__A_, tu m'as ouvert les yeux et j'ai finalement opté pour le shell_exec (tail $fichier). Et par la même occasion je souhaiterai partager avec vous une autre méthode qui marche aussi : > http://tekkie.flashbit.net/php/tail-...onality-in-php A bon entendeur.
|
|
|
01
|
Copyright © 2000-2012 - www.developpez.com