Logger l'activité d'un script PHP, fopen trop lent
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
Code:
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);
} |
Les données sont correctement sauvegardées pas de soucis.
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 :mouarf:
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