Bonjour,
dans un script php, je cherche à enregistrer les variables et certaines informations à la fin de son exécution.
Pour ce faire, j'appelle la fonction de log en fin de script, méchanisme classique avec fopen/fclose
Les données sont correctement sauvegardées pas de soucis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static function writeCustom($path, $prefix, $msg) { $log_file = $path . $prefix . '_' . date("Ymd") . '.dat'; $msg = "\n" . date('Y-m-d H:i:s') . ' - ' . $msg; $fhandle = fopen($log_file, 'a'); if ($fhandle) { fwrite($fhandle, $msg); fclose($fhandle); }
Par contre, l'opération s’exécute parfois plusieurs fois par seconde et là l’écriture du fichier devient long, parfois même très long
Du coup cela ralentit la sortie du script PHP et l'affichage de la page.
Existe-il un méthode plus rapide que fopen/fclose ?
Peut-on écrire dans un fichier de manière non bloquante ou asynchrone ?
Stockage dans la RAM
Une autre idée serait d'utiliser un tampon ou un pool avant l'écriture du fichier.
1. chaque $msg en stocké dans la mémoire,
2. dès que l'on a 10 $msg en RAM, écriture du fichier + vidage du pool de String
Est-ce possible en PHP ? en sachant que les scripts s’exécutent en parallèle
Merci pour vos idées ou expérience en la matière
Partager