[PHP]Ecrire au début d'un fichier
Résolu
Monsieur L.
-
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 :
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.
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:
- [PHP]Ecrire au début d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
essaies plutot de remplacer : la ligne $message = ... par :
$message = $message."\r\n[".$dateErreur."] - Erreur ".$numero." : ".$erreur;
Et ajouter un saut de ligne n'a rien fait, les lignes s'ajoutent toujours à la fin du fichier.