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

Résolu/Fermé
Monsieur L. - 24 juin 2011 à 22:32
 Monsieur L. - 25 juin 2011 à 10:28
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 mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
24 juin 2011 à 23:52
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 mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
25 juin 2011 à 00:01
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.
25 juin 2011 à 10:28
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