IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Logger l'activité d'un script PHP, fopen trop lent


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Points : 27
    Points
    27
    Par défaut 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 : 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);
    }
    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
    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

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par Fobec Voir le message
    Existe-il un méthode plus rapide que fopen/fclose ?
    oui file_put_contents. Mais je doute que tu y gagne beaucoup en temps d'exécution.
    Citation Envoyé par Fobec Voir le message
    Peut-on écrire dans un fichier de manière non bloquante ou asynchrone ?
    Oui avec ajax.
    Eventuellement tu peux faire passer des variables php dans un code javascript qui s'exécutera à la fin du chargement de la page et qui appellera une page php qui fera ce que tu veux.

    Et sinon quand on veut enregistrer des données dans un fichier le plus optimisé est souvent la base de donnée. Pas possible ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    Oui avec ajax.
    l’embêtant est de passer par le client, coté serveur pas de soucis de sécurité ou Google qui s'acharne sur un lien.

    Et sinon quand on veut enregistrer des données dans un fichier le plus optimisé est souvent la base de donnée. Pas possible ?
    Ben vi, t'as raison ! avec Sqlite ou une DB dans le genre j'ai accès à un pool d'écriture.

    Merci à toi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 08h45
  2. [Smarty] Double exécution script PHP si trop de "echo"
    Par speedev dans le forum Bibliothèques et frameworks
    Réponses: 27
    Dernier message: 17/05/2012, 19h10
  3. Script php est trop lourd à lancer dans le terminal ?
    Par totoAussi dans le forum Linux
    Réponses: 2
    Dernier message: 26/03/2011, 10h48
  4. Script vba excel trop lent
    Par zootman dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2006, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo