PHP Misc
Découvrez les fonctions diverses de PHP utilisées pour inspecter l'environnement, générer des ID uniques et contrôler l'exécution.
Les fonctions diverses de PHP regroupent des fonctions intégrées qui n'appartiennent à aucune catégorie particulière comme les chaînes ou les tableaux. Elles permettent principalement à votre script d'examiner son propre environnement : quelle version de PHP est en cours d'exécution, sur quel système d'exploitation il tourne, quel utilisateur est propriétaire du processus, combien de temps il est autorisé à s'exécuter, et ainsi de suite. On y fait appel lorsqu'on a besoin d'inspecter le runtime, de déboguer une configuration, de générer un jeton unique ou de contrôler la temporisation de l'exécution.
Cette page regroupe les plus utiles de ces fonctions selon leur usage concret, avec des exemples exécutables pour chaque groupe.
Inspecter l'installation PHP
Quand quelque chose se comporte différemment entre deux serveurs, la première question est généralement « quelle version et quelle configuration utilise-t-on ? » Ces fonctions y répondent.
phpinfo()— affiche un rapport HTML complet de la version de PHP, des extensions chargées et des paramètresphp.ini. Exécutez-le une fois sur un nouveau serveur, puis supprimez le fichier (il révèle beaucoup d'informations sur votre environnement).phpversion()— retourne uniquement la chaîne de version, par ex."8.2.10".php_uname()— retourne des informations sur le système d'exploitation sur lequel PHP s'exécute.get_defined_constants()— retourne un tableau de toutes les constantes définies (intégrées et personnalisées).
<?php
echo phpversion(), "\n"; // 8.2.10
echo php_uname('s'), "\n"; // e.g. "Linux" ('s' = OS name only)
// Did the developer remember to define this config constant?
defined('APP_ENV') or define('APP_ENV', 'production');
$constants = get_defined_constants(true); // grouped by category
echo APP_ENV, "\n"; // production
?>
phpinfo()n'a de sens que lorsque la sortie va vers un navigateur, c'est pourquoi elle n'est pas montrée dans l'exemple exécutable ci-dessus.
Comparer les versions
Ne comparez jamais des chaînes de version avec < ou == — "8.10" est inférieur à "8.9" en tant que chaîne simple. Utilisez version_compare(), qui comprend la sémantique des versions.
<?php
// Is the running PHP new enough for a feature?
if (version_compare(PHP_VERSION, '8.0.0', '>=')) {
echo "Named arguments are available.\n";
}
// Two-argument form returns -1, 0, or 1
echo version_compare('1.9.0', '1.10.0'), "\n"; // -1 (1.9 is older)
?>Générer des ID uniques
uniqid() construit un identifiant à partir de l'heure en microsecondes actuelle. C'est pratique pour les noms de fichiers temporaires et les clés de cache-busting, mais ce n'est pas cryptographiquement sécurisé — pour les jetons, les mots de passe ou tout ce qui est sensible à la sécurité, utilisez plutôt random_bytes() ou bin2hex(random_bytes(16)).
<?php
echo uniqid(), "\n"; // e.g. 651f3a9c4b2d8
echo uniqid('user_', true), "\n"; // prefix + more entropy: user_651f3a9c4b2d81.23456789
?>Contrôler la temporisation et les limites d'exécution
Les scripts à longue durée d'exécution (imports, générateurs de rapports) ont parfois besoin de faire une pause ou de s'exécuter plus longtemps que la limite de temps par défaut.
sleep($seconds)— mettre le script en pause pour un nombre entier de secondes.usleep($microseconds)— mettre en pause pour des microsecondes (1 seconde = 1 000 000 µs).set_time_limit($seconds)— réinitialiser le temps d'exécution maximum ;0signifie aucune limite (ignoré lorsquemax_execution_timene peut pas être modifié, par ex. en mode sans échec).ignore_user_abort(true)— continuer à s'exécuter même si le client se déconnecte, utile pour terminer une tâche en arrière-plan.
<?php
$start = time();
sleep(1); // pause 1 second
usleep(500000); // pause another half second
echo "Paused for about ", time() - $start, "s\n"; // Paused for about 1s
set_time_limit(30); // allow up to 30 seconds for the rest of the script
?>Lire les informations sur le processus et l'environnement
Ces fonctions fournissent des informations sur le processus du système d'exploitation dans lequel PHP s'exécute actuellement.
getmypid()— l'identifiant de processus du script en cours.get_current_user()— le propriétaire du fichier de script en cours d'exécution.getmyuid()/getmygid()— l'identifiant utilisateur et l'identifiant de groupe du propriétaire du script (sur les systèmes qui les prennent en charge).
<?php
echo "PID: ", getmypid(), "\n"; // e.g. PID: 4821
echo "User: ", get_current_user(), "\n";
?>Travailler avec le code source
Quelques fonctions traitent le code source PHP en tant que texte — principalement pour les pages de documentation et les visualiseurs de code.
highlight_file($filename)— afficher la source d'un fichier avec une coloration syntaxique HTML.highlight_string($code)— pareil, mais pour une chaîne de code PHP.php_strip_whitespace($filename)— retourner la source d'un fichier avec les commentaires et les espaces superflus supprimés.get_browser()— retourner des détails sur le navigateur du visiteur, mais seulement lorsque le fichier de configurationbrowscap.iniest configuré ; sinon, il retournefalse.
<?php
$code = "<?php echo 'Hello'; // a comment ?>";
// highlight_string can also return the markup instead of printing it
$html = highlight_string($code, true);
echo $html, "\n"; // a <code>...</code> block with colorized <span> tags
?>Quand utiliser ces fonctions ?
| Tâche | Fonction |
|---|---|
| Protéger une fonctionnalité par une version PHP minimale | version_compare() |
| Générer un nom de fichier unique temporaire | uniqid() |
| Faire une pause entre des appels API pour respecter une limite de débit | sleep() / usleep() |
| Laisser un long import se terminer sans expiration | set_time_limit(), ignore_user_abort() |
| Déboguer la configuration PHP d'un serveur | phpinfo(), phpversion(), php_uname() |
Pour approfondir les sujets connexes, voir PHP Functions, PHP Constants, PHP Date and Time et PHP Strings.