[PHP]Ecrire au début d'un fichier

[Résolu/Fermé]
Signaler
-
 Monsieur L. -
Bonjour,

Léger problème dans un de mes scripts PHP.
Je suis en train de développer une fonction qui enregistre dans un fichier txt les erreurs récupérées dans un try... catch, en les classant de la date la plus récente à la plus ancienne.
Mais je ne parviens pas à les classer dans cet ordre, toutes les nouvelles données sont inscrites à la suite de mon fichier, et non pas au début, comme je le voudrais.

Exemple de mon script :

try
    {
        $connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_db, $PARAM_user, $PARAM_pwd);
    }
    catch(Exception $e)
    {
        $erreur = $e->getMessage();
        $numero = $e->getCode();
        $dateErreur = date("Y-m-d H:i:s"); //AAAA-MM-JJ HH:MM:SS
        $f = "erreurs/rapport.txt";
        
        // Ouverture du fichier.
        $rapport = fopen($f, "r+"); // r+ : Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier. 
        
        // Récupération du contenu.
        $message = file_get_contents($f);
        
        // Place le pointeur au début du fichier.
        fseek($rapport, 0);
        
        // Écriture dans le fichier.
        $message .= "[".$dateErreur."] - Erreur ".$numero." : ".$erreur;
        fputs($rapport, $message);
        
        // Fermeture du fichier.
        fclose($rapport);
    }



Et voici ce que je récupère dans mon fichier :
[2011-06-24 22:22:27] - Erreur 0 : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
[2011-06-24 22:22:30] - Erreur 0 : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
[2011-06-24 22:22:33] - Erreur 0 : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)




Or donc, ce que je veux, c'est avoir :
[2011-06-24 22:22:33] - Erreur 0 : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
[2011-06-24 22:22:30] - Erreur 0 : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
[2011-06-24 22:22:27] - Erreur 0 : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)


Si vous pouviez m'éclairer.
Merci d'avance.

1 réponse

Messages postés
865
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
20 décembre 2012
187
Salut,
essayes de remplacer la ligne fseek(....); par rewind($rapport); pour voir ce que ça donne .
Messages postés
865
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
20 décembre 2012
187
ah non en faite ça va simplement réécrire par dessus je crois .

essaies plutot de remplacer : la ligne $message = ... par :

$message = $message."\r\n[".$dateErreur."] - Erreur ".$numero." : ".$erreur;

rewind($f) est l'équivalent de fseek($f, 0), ça fera la même chose.
Et ajouter un saut de ligne n'a rien fait, les lignes s'ajoutent toujours à la fin du fichier.