W3docs

Fonction PHP closelog() : définition et utilisation

Découvrez la fonction PHP closelog(), qui ferme la connexion au journal système (syslog) et libère les ressources associées.

La fonction closelog() ferme la connexion que PHP maintient ouverte vers le journal système (syslog). Vous ouvrez cette connexion avec openlog(), vous y écrivez avec syslog(), et closelog() est l'appel correspondant qui la termine. Cette page explique ce qu'elle fait, sa signature et sa valeur de retour, quand vous en avez réellement besoin, et comment elle s'intègre dans un flux de journalisation typique.

Syntaxe

closelog(): true

La fonction ne prend aucun argument. Depuis PHP 8.0, elle retourne toujours true ; dans PHP 7 et les versions antérieures, le type de retour déclaré était bool. Vous n'avez presque jamais besoin de vérifier le résultat.

Ce que fait closelog()

closelog() ferme le descripteur que PHP a ouvert vers le journal système et libère les ressources liées à cette connexion. Quelques détails importants à connaître :

  • Appeler closelog() est facultatif. PHP ferme automatiquement la connexion syslog à la fin du script, donc pour une requête web de courte durée, vous n'avez que rarement besoin de l'appeler explicitement.
  • Elle n'a de sens qu'après l'établissement d'une connexion. L'appeler sans qu'une connexion openlog()/syslog() soit ouverte est sans danger et ne fait simplement rien d'utile.
  • Après closelog(), le prochain appel à syslog() rouvre automatiquement la connexion, en relisant éventuellement les paramètres ident et options que vous avez passés à un nouveau openlog().

Quand en avez-vous réellement besoin

PHP nettoyant les ressources à la fin de la requête, les cas où appeler closelog() est important concernent les scripts de longue durée ou à contextes multiples :

  • Workers CLI et démons à longue durée de vie. Un processus qui reste actif pendant des heures doit libérer les descripteurs de fichiers dont il n'a plus besoin plutôt que de les garder ouverts.
  • Changement d'identité de journalisation. Si vous souhaitez que les messages ultérieurs utilisent un ident ou une facility différents, appelez closelog() puis openlog() à nouveau avec les nouveaux paramètres.
  • Propreté dans le code partagé. Dans une bibliothèque qui ouvre sa propre connexion syslog, la fermer évite de la laisser fuir dans le code appelant.

Comment utiliser closelog()

Son utilisation se résume à un seul appel sans arguments. Le schéma réaliste est ouverture → écriture → fermeture :

<?php

// Open a connection, tagging each line with "myapp" and the process ID
openlog("myapp", LOG_PID | LOG_PERROR, LOG_LOCAL0);

// Write a message at the INFO priority level
syslog(LOG_INFO, "User login succeeded");

// Release the connection
closelog();

LOG_PID ajoute l'identifiant de processus à chaque entrée, LOG_PERROR envoie également le message vers la sortie d'erreur standard, et LOG_LOCAL0 sélectionne une facility de journalisation. Consultez openlog() pour la liste complète des options et facilities.

Réutiliser la connexion avec une nouvelle identité

closelog() est la méthode propre pour changer l'étiquette (ident) utilisée pour les messages suivants :

<?php

openlog("auth-service", LOG_PID, LOG_LOCAL0);
syslog(LOG_NOTICE, "Authentication attempt");
closelog();

// Later messages are tagged "billing-service" instead
openlog("billing-service", LOG_PID, LOG_LOCAL0);
syslog(LOG_NOTICE, "Invoice generated");
closelog();

Erreurs courantes

  • S'attendre à ce que closelog() vide un tampon ou « sauvegarde » les journaux. Chaque appel à syslog() transmet déjà le message au journal système ; closelog() se contente de fermer la connexion.
  • L'appeler après chaque message individuel. Ouvrir et fermer à répétition engendre une surcharge. Pour une requête simple, ouvrez une fois, écrivez autant de lignes que vous le souhaitez, et fermez à la fin (ou laissez simplement PHP le faire pour vous).
  • Supposer qu'elle arrête toute journalisation ultérieure. Un appel ultérieur à syslog() rouvre la connexion de manière transparente — closelog() ne bloque pas la journalisation.

Fonctions associées

  • openlog() — ouvre la connexion vers le journal système.
  • syslog() — génère un message dans le journal système.

Conclusion

closelog() ferme la connexion syslog ouverte par openlog() et libère ses ressources. Elle ne prend aucun argument et retourne true. Pour les requêtes web ordinaires, PHP ferme la connexion à votre place ; utilisez donc closelog() principalement dans les processus de longue durée ou lorsque vous devez changer d'identité de journalisation en cours de script.

Pratique

Pratique
Quel est le rôle de la fonction closelog() en PHP ?
Quel est le rôle de la fonction closelog() en PHP ?
Was this page helpful?