Php : Atteindre directement la Nième ligne d'un fichier texte

Fermé
loqueris Messages postés 1 Date d'inscription mercredi 13 décembre 2017 Statut Membre Dernière intervention 13 décembre 2017 - 13 déc. 2017 à 12:05
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 13 déc. 2017 à 14:30
Bonjour,

je n'ai pas trouvé de réponse satisfaisante à ma question (et pourtant, souvent google est mon amis).

J'ai un fichier texte de près de 2M de lignes (longueur fixe).

Gros fichier (près de 180Mo), je le parcours correctement avec la fonction fgets() afin de copier mon fichier dans une base MySQL...

Mais j'ai beau changer dans le php.ini le max_execution_time
J'ai beau faire évoler mon script afin qu'il dure plus longtemps avec set_time_limit()
Rien y fait, il plante après 60k lignes à peu près...

Question, comment puis-je faire pour atteindre la 60001è ligne et commencer ma lecture directement sur celle-ci.
Merci de ne pas me proposer de faire une boucle jusqu'à la 60kè ligne et ... ca marchera pas !

J'aimerais arriver directement à la Nième ligne et pouvoir ainsi introduire mon fichier dans MySQL..

Merci pour votre aide
A voir également:

1 réponse

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
13 déc. 2017 à 14:30
Salut,

Pas de fonction pour atteindre la Nieme ligne pour la simple et bonne raison que ce qui détermine une ligne est le caractère \n (ou \r\n), et la longueur d'une ligne n'étant pas fixe.

Par contre tu as la possibilité de sauvegarder un curseur pour connaitre la dernière position lue dans ton fichier et reprendre le traitement à partir de là, en utilisant la fonction fseek

http://php.net/manual/fr/function.fseek.php

En t'appuyant sur l exemple, dans ton cas, tu liera caractère par caractère jusque la fin de ligne pour obtenir ta ligne complète et incrémenter une variable qui sera ton curseur.

naga
0