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

Résolu
Monsieur L. -  
 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.
A voir également:

1 réponse

naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
Salut,
essayes de remplacer la ligne fseek(....); par rewind($rapport); pour voir ce que ça donne .
0
naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
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;
0
Monsieur L.
 
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.
0