Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
apache2-doc /
manual /
fr /
mod /
Delete
Unzip
Name
Size
Permission
Date
Action
core.html
361.82
KB
-rw-r--r--
2026-06-12 05:08
directive-dict.html
20.54
KB
-rw-r--r--
2026-06-12 05:08
directives.html
58.25
KB
-rw-r--r--
2026-06-12 05:08
event.html
33.28
KB
-rw-r--r--
2026-06-12 05:08
index.html
27.9
KB
-rw-r--r--
2026-06-12 05:08
mod_access_compat.html
33.23
KB
-rw-r--r--
2026-06-12 05:08
mod_actions.html
13.74
KB
-rw-r--r--
2026-06-12 05:08
mod_alias.html
46.22
KB
-rw-r--r--
2026-06-12 05:08
mod_allowmethods.html
8.33
KB
-rw-r--r--
2026-06-12 05:08
mod_asis.html
9.15
KB
-rw-r--r--
2026-06-12 05:08
mod_auth_basic.html
22.6
KB
-rw-r--r--
2026-06-12 05:08
mod_auth_digest.html
23.05
KB
-rw-r--r--
2026-06-12 05:08
mod_auth_form.html
57.7
KB
-rw-r--r--
2026-06-12 05:08
mod_authn_anon.html
18.52
KB
-rw-r--r--
2026-06-12 05:08
mod_authn_core.html
18.41
KB
-rw-r--r--
2026-06-12 05:08
mod_authn_dbd.html
16.96
KB
-rw-r--r--
2026-06-12 05:08
mod_authn_dbm.html
13.86
KB
-rw-r--r--
2026-06-12 05:08
mod_authn_file.html
12.25
KB
-rw-r--r--
2026-06-12 05:08
mod_authn_socache.html
21.67
KB
-rw-r--r--
2026-06-12 05:08
mod_authnz_fcgi.html
30.74
KB
-rw-r--r--
2026-06-12 05:08
mod_authnz_ldap.html
93.48
KB
-rw-r--r--
2026-06-12 05:08
mod_authz_core.html
45.36
KB
-rw-r--r--
2026-06-12 05:08
mod_authz_dbd.html
21.01
KB
-rw-r--r--
2026-06-12 05:08
mod_authz_dbm.html
14.15
KB
-rw-r--r--
2026-06-12 05:08
mod_authz_groupfile.html
11.11
KB
-rw-r--r--
2026-06-12 05:08
mod_authz_host.html
14.94
KB
-rw-r--r--
2026-06-12 05:08
mod_authz_owner.html
12.07
KB
-rw-r--r--
2026-06-12 05:08
mod_authz_user.html
8.39
KB
-rw-r--r--
2026-06-12 05:08
mod_autoindex.html
74.86
KB
-rw-r--r--
2026-06-12 05:08
mod_brotli.html
23.66
KB
-rw-r--r--
2026-06-12 05:08
mod_buffer.html
9.69
KB
-rw-r--r--
2026-06-12 05:08
mod_cache.html
81.11
KB
-rw-r--r--
2026-06-12 05:08
mod_cache_disk.html
22.08
KB
-rw-r--r--
2026-06-12 05:08
mod_cache_socache.html
19.8
KB
-rw-r--r--
2026-06-12 05:08
mod_cern_meta.html
11.81
KB
-rw-r--r--
2026-06-12 05:08
mod_cgi.html
22.69
KB
-rw-r--r--
2026-06-12 05:08
mod_cgid.html
12.45
KB
-rw-r--r--
2026-06-12 05:08
mod_charset_lite.html
17.03
KB
-rw-r--r--
2026-06-12 05:08
mod_data.html
7.69
KB
-rw-r--r--
2026-06-12 05:08
mod_dav.html
22.71
KB
-rw-r--r--
2026-06-12 05:08
mod_dav_fs.html
11.52
KB
-rw-r--r--
2026-06-12 05:08
mod_dav_lock.html
10.38
KB
-rw-r--r--
2026-06-12 05:08
mod_dbd.html
28.99
KB
-rw-r--r--
2026-06-12 05:08
mod_deflate.html
34.78
KB
-rw-r--r--
2026-06-12 05:08
mod_dialup.html
7.68
KB
-rw-r--r--
2026-06-12 05:08
mod_dir.html
27.64
KB
-rw-r--r--
2026-06-12 05:08
mod_dumpio.html
10.02
KB
-rw-r--r--
2026-06-12 05:08
mod_echo.html
7.36
KB
-rw-r--r--
2026-06-12 05:08
mod_env.html
12.18
KB
-rw-r--r--
2026-06-12 05:08
mod_example_hooks.html
12.06
KB
-rw-r--r--
2026-06-12 05:08
mod_expires.html
19.61
KB
-rw-r--r--
2026-06-12 05:08
mod_ext_filter.html
20.54
KB
-rw-r--r--
2026-06-12 05:08
mod_file_cache.html
18.33
KB
-rw-r--r--
2026-06-12 05:08
mod_filter.html
39.51
KB
-rw-r--r--
2026-06-12 05:08
mod_headers.html
41.18
KB
-rw-r--r--
2026-06-12 05:08
mod_heartbeat.html
9.75
KB
-rw-r--r--
2026-06-12 05:08
mod_heartmonitor.html
12.95
KB
-rw-r--r--
2026-06-12 05:08
mod_http2.html
85.5
KB
-rw-r--r--
2026-06-12 05:08
mod_ident.html
10.57
KB
-rw-r--r--
2026-06-12 05:08
mod_imagemap.html
24.56
KB
-rw-r--r--
2026-06-12 05:08
mod_include.html
70.75
KB
-rw-r--r--
2026-06-12 05:08
mod_info.html
16.11
KB
-rw-r--r--
2026-06-12 05:08
mod_isapi.html
26.77
KB
-rw-r--r--
2026-06-12 05:08
mod_lbmethod_bybusyness.html
8.23
KB
-rw-r--r--
2026-06-12 05:08
mod_lbmethod_byrequests.html
13.18
KB
-rw-r--r--
2026-06-12 05:08
mod_lbmethod_bytraffic.html
8.59
KB
-rw-r--r--
2026-06-12 05:08
mod_lbmethod_heartbeat.html
8.57
KB
-rw-r--r--
2026-06-12 05:08
mod_ldap.html
59.24
KB
-rw-r--r--
2026-06-12 05:08
mod_log_config.html
44.14
KB
-rw-r--r--
2026-06-12 05:08
mod_log_debug.html
10.92
KB
-rw-r--r--
2026-06-12 05:08
mod_log_forensic.html
15.15
KB
-rw-r--r--
2026-06-12 05:08
mod_logio.html
11.47
KB
-rw-r--r--
2026-06-12 05:08
mod_lua.html
108.75
KB
-rw-r--r--
2026-06-12 05:08
mod_macro.html
16.92
KB
-rw-r--r--
2026-06-12 05:08
mod_md.html
126.42
KB
-rw-r--r--
2026-06-12 05:08
mod_mime.html
76.65
KB
-rw-r--r--
2026-06-12 05:08
mod_mime_magic.html
18.15
KB
-rw-r--r--
2026-06-12 05:08
mod_negotiation.html
24.81
KB
-rw-r--r--
2026-06-12 05:08
mod_nw_ssl.html
9.76
KB
-rw-r--r--
2026-06-12 05:08
mod_privileges.html
35.27
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy.html
165.75
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_ajp.html
38.28
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_balancer.html
27.32
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_connect.html
10.61
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_express.html
14.2
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_fcgi.html
25.72
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_fdpass.html
7.59
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_ftp.html
22.19
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_hcheck.html
19.76
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_html.html
41.71
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_http.html
13.07
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_http2.html
10.95
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_scgi.html
16.14
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_uwsgi.html
8.6
KB
-rw-r--r--
2026-06-12 05:08
mod_proxy_wstunnel.html
11.64
KB
-rw-r--r--
2026-06-12 05:08
mod_ratelimit.html
7.25
KB
-rw-r--r--
2026-06-12 05:08
mod_reflector.html
8.9
KB
-rw-r--r--
2026-06-12 05:08
mod_remoteip.html
30.44
KB
-rw-r--r--
2026-06-12 05:08
mod_reqtimeout.html
14.19
KB
-rw-r--r--
2026-06-12 05:08
mod_request.html
10.05
KB
-rw-r--r--
2026-06-12 05:08
mod_rewrite.html
94.55
KB
-rw-r--r--
2026-06-12 05:08
mod_sed.html
12.56
KB
-rw-r--r--
2026-06-12 05:08
mod_session.html
40.92
KB
-rw-r--r--
2026-06-12 05:08
mod_session_cookie.html
14.85
KB
-rw-r--r--
2026-06-12 05:08
mod_session_crypto.html
20.25
KB
-rw-r--r--
2026-06-12 05:08
mod_session_dbd.html
28.44
KB
-rw-r--r--
2026-06-12 05:08
mod_setenvif.html
24.75
KB
-rw-r--r--
2026-06-12 05:08
mod_slotmem_plain.html
8.32
KB
-rw-r--r--
2026-06-12 05:08
mod_slotmem_shm.html
9.1
KB
-rw-r--r--
2026-06-12 05:08
mod_so.html
15.7
KB
-rw-r--r--
2026-06-12 05:08
mod_socache_dbm.html
6.02
KB
-rw-r--r--
2026-06-12 05:08
mod_socache_dc.html
6.08
KB
-rw-r--r--
2026-06-12 05:08
mod_socache_memcache.html
9.14
KB
-rw-r--r--
2026-06-12 05:08
mod_socache_redis.html
11.06
KB
-rw-r--r--
2026-06-12 05:08
mod_socache_shmcb.html
6.13
KB
-rw-r--r--
2026-06-12 05:08
mod_speling.html
13.88
KB
-rw-r--r--
2026-06-12 05:08
mod_ssl.html
236.75
KB
-rw-r--r--
2026-06-12 05:08
mod_status.html
13.34
KB
-rw-r--r--
2026-06-12 05:08
mod_substitute.html
16.08
KB
-rw-r--r--
2026-06-12 05:08
mod_suexec.html
8.28
KB
-rw-r--r--
2026-06-12 05:08
mod_systemd.html
8.02
KB
-rw-r--r--
2026-06-12 05:08
mod_unique_id.html
18.88
KB
-rw-r--r--
2026-06-12 05:08
mod_unixd.html
15.37
KB
-rw-r--r--
2026-06-12 05:08
mod_userdir.html
14.15
KB
-rw-r--r--
2026-06-12 05:08
mod_usertrack.html
21.62
KB
-rw-r--r--
2026-06-12 05:08
mod_version.html
11.08
KB
-rw-r--r--
2026-06-12 05:08
mod_vhost_alias.html
23.44
KB
-rw-r--r--
2026-06-12 05:08
mod_watchdog.html
8.17
KB
-rw-r--r--
2026-06-12 05:08
mod_xml2enc.html
17.69
KB
-rw-r--r--
2026-06-12 05:08
module-dict.html
9.7
KB
-rw-r--r--
2026-06-12 05:08
mpm_common.html
82.09
KB
-rw-r--r--
2026-06-12 05:08
mpm_netware.html
10.67
KB
-rw-r--r--
2026-06-12 05:08
mpm_winnt.html
11.52
KB
-rw-r--r--
2026-06-12 05:08
mpmt_os2.html
7.78
KB
-rw-r--r--
2026-06-12 05:08
overrides.html
77.74
KB
-rw-r--r--
2026-06-12 05:08
prefork.html
18.13
KB
-rw-r--r--
2026-06-12 05:08
quickreference.html
217.91
KB
-rw-r--r--
2026-06-12 05:08
worker.html
16.82
KB
-rw-r--r--
2026-06-12 05:08
Save
Rename
<!DOCTYPE html SYSTEM "about:legacy-compat"> <html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta content="width=device-width, initial-scale=1" name="viewport"> <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> <title>mod_unique_id - Serveur HTTP Apache Version 2.4</title> <link href="../../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet"> <link href="../../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size"> <link href="../../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../../style/css/prettify.css"> <script src="../../style/scripts/prettify.min.js"> </script> <link href="../../images/favicon.png" rel="shortcut icon"></head> <body> <div id="page-header"> <p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p> <p class="apache">Serveur HTTP Apache Version 2.4</p> <img alt="" src="../../images/feather.png"></div> <div class="up"><a href="./index.html"><img title="<-" alt="<-" src="../../images/left.gif"></a></div> <div id="path"> <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">Serveur HTTP</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="../index.html">Version 2.4</a> > <a href="./index.html">Modules</a></div> <div id="page-content"> <div id="preamble"><h1>Module Apache mod_unique_id</h1> <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> <div class="toplang"> <p><span>Langues Disponibles: </span><a href="../../en/mod/mod_unique_id.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../../fr/mod/mod_unique_id.html" title="Français"> fr </a> | <a href="../../ja/mod/mod_unique_id.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | <a href="../../ko/mod/mod_unique_id.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> </div> <div class="outofdate">Cette traduction peut être périmée. Vérifiez la version anglaise pour les changements récents.</div> <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Fournit une variable d'environnement contenant un identifiant unique pour chaque requête</td></tr> <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr> <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>unique_id_module</td></tr> <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_unique_id.c</td></tr></table> <h3>Sommaire</h3> <p>Ce module fournit un identifiant dont l'unicité est garantie parmi "toutes" les requêtes sous des conditions très précises. L'identifiant unique le sera aussi parmi plusieurs machines appartenant à un cluster correctement configuré. L'identifiant est affecté à la variable d'environnement <code>UNIQUE_ID</code> pour chaque requête. Les identifiants uniques sont utiles pour diverses raisons dont la nature se situe au delà de la portée de ce document.</p> </div> <div id="quickview"><h3>Sujets</h3> <ul id="topics"> <li><img alt="" src="../../images/down.gif"> <a href="#theory">Théorie</a></li> </ul><h3 class="directives">Directives</h3> <p>Ce module ne fournit aucune directive.</p> <h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_unique_id">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_unique_id">Signaler un bug</a></li></ul></div> <div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="theory">Théorie <a title="Lien permanent" href="#theory" class="permalink">¶</a></h2> <p>Tout d'abord un bref rappel de la manière dont le serveur Apache fonctionne sous Unix (cette fonctionnalité n'étant actuellement pas supportée sous Windows NT). Sous Unix, Apache crée plusieurs processus enfants, ces derniers traitant les requêtes une par une. Chaque processus enfant peut traiter plusieurs requêtes pendant sa durée de vie. Dans le cadre de cette discussion, nous supposerons que les différents processus enfants ne s'échangent pas de données entre eux. Nous nous référerons aux processus enfants sous le nom de <dfn>processus httpd</dfn>.</p> <p>Votre site web est réparti entre une ou plusieurs machines dont vous êtes l'administrateur, et que nous nommerons cluster de serveurs. Chaque serveur peut exécuter plusieurs instances d'Apache. L'ensemble de ces dernières sera considéré comme "l'Univers", et sous certaines hypothèses, nous montrerons qu'il est possible dans cet univers, de générer des identifiants uniques pour chaque requête, sans pour autant nécessiter une communication importante entre les différents serveurs du cluster.</p> <p>Les machines de votre cluster doivent satisfaire ces conditions (même si le cluster ne comporte qu'une machine, vous devez synchroniser son horloge avec NTP) :</p> <ul> <li>Les temps des machines sont synchronisés via NTP ou tout autre protocole de synchronisation du temps en réseau.</li> <li>Les nom d'hôtes des machines sont tous différents, de façon à ce que le module puisse recevoir une adresse IP différente pour chaque machine du cluster en effectuant une recherche sur le nom d'hôte.</li> </ul> <p>Au vu des caractéristiques actuelles du système d'exploitation, nous supposerons que les pids (identifiants processus) sont codés sur 32 bits. Si le système d'exploitation utilise plus de 32 bits pour un pid, la correction est triviale mais doit être effectuée dans le code.</p> <p>Ces hypothèses posées, à un instant donné, nous pouvons distinguer tout processus httpd sur toute machine du cluster de tous les autres processus httpd. Pour ce faire, il suffit d'utiliser l'adresse IP de la machine et le pid du processus httpd. Un processus httpd peut traiter plusieurs requêtes simultanément si vous utilisez un module MPM multi-threadé. Pour identifier les threads, Apache httpd utilise en interne un index de threads. Ainsi, afin de générer des identifiants uniques pour chaque requête, il suffit d'effectuer une distinction en fonction du temps.</p> <p>Pour déterminer le temps, nous utiliserons un repère de temps Unix (les secondes écoulées depuis le 1er janvier 1970 UTC), et un compteur 16 bits. La précision du repère de temps n'étant que d'une seconde, le compteur va représenter 65536 valeurs par seconde. Le quadruplet <em>(adresse IP, pid, repère de temps, compteur)</em> est en mesure de distinguer 65536 requêtes par seconde par processus httpd. Il peut cependant arriver que le même pid soit réutilisé au cours du temps, et le compteur est là pour pallier cet inconvénient.</p> <p>Lorsqu'un processus enfant httpd est créé, le compteur est initialisé avec (nombre de microsecondes actuel divisé par 10) modulo 65536 (cette formule a été choisie pour éliminer certains problème de variance avec les bits de poids faibles du compteur de microsecondes sur certains systèmes). Lorsqu'un identifiant unique est généré, le repère de temps utilisé est le moment où la requête arrive sur le serveur web. Le compteur est incrémenté à chaque création d'identifiant (et peut repasser à 0 lorsqu'il a atteint sa valeur maximale).</p> <p>Le noyau génère un pid pour chaque processus lors de sa création, et le compteur de pid est réinitialisé à une certaine valeur lorsqu'il a atteint sa valeur maximale (les pid sont codés sur 16 bits sous de nombreux Unixes, mais les systèmes les plus récents les ont étendus à 32 bits). La même valeur de pid pourra donc être réutilisée au cours du temps. Cependant, tant qu'elle n'est pas réutilisée dans la même seconde, elle ne remet pas en cause l'unicité de notre quadruplet. Nous supposerons donc que le système ne créera pas plus de 65536 processus en une seconde (ce nombre peut être de 32768 sous certains Unixes, mais même dans ce cas, on est en général loin de cette situation).</p> <p>Il est possible que le temps se répète pour une raison quelconque. Supposons par exemple que l'horloge système soit retardée et repasse par un temps passé (ou bien, comme elle avançait, elle a été remise à l'heure, et elle repasse par un temps futur). Dans ce cas, il peut être facilement démontré que le couple pid/repère de temps peut être réutilisé. Le choix de la formule d'initialisation du compteur a été effectué dans l'intention de pallier ce problème. Notez qu'un nombre vraiment aléatoire serait souhaitable pour initialiser le compteur, mais il n'existe pas de tel nombre directement lisible sur la plupart des systèmes (c'est à dire que vous ne pouvez pas utiliser rand() car vous devez déclencher le générateur avec une valeur unique, et vous ne pouvez pas utiliser le temps à cet effet car celui-ci , au moins à la seconde près, s'est répété). Il ne s'agit donc pas d'une défense parfaite.</p> <p>Même si elle n'est pas parfaite, quel est le degré d'efficacité de cette défense ? Supposons qu'une de vos machines serve au plus 500 requêtes par seconde (ce qui constitue une limite supérieure très raisonnable au moment où ce document est écrit, car les systèmes ne se contentent en général pas de débiter des fichiers statiques). Pour y parvenir, un certain nombre de processus enfants sera nécessaire, qui dépendra du nombre de clients simultanés présents. Mais soyons pessimiste et supposons qu'un seul processus enfant soit capable de servir 500 requêtes par secondes. Il existe 1000 valeurs de démarrage possibles du compteur pour lesquelles deux séquences de 500 requêtes puissent se recouvrir. Il y a donc 1,5% de chance que le processus enfant répète une valeur de compteur si le temps se répète (avec une résolution d'une seconde), et l'unicité sera alors remise en cause. C'est cependant un exemple très pessimiste, et avec les valeurs du monde réel, il y a bien moins de chances que cela ne se produise. Si vous estimez que ceci a tout de même quelque chances de se produire sur votre système, vous pouvez migrer vers un compteur à 32 bits (en modifiant le code).</p> <p>On pourrait supposer que ceci a plus de chance de se produire lors du passage à l'heure d'hiver où l'horloge est "retardée". Cela ne constitue cependant pas un problème car les temps pris en compte ici sont des temps UTC, qui vont "toujours" de l'avant. Notez que les Unixes à base de processeur x86 peuvent nécessiter une configuration particulière pour que ceci soit vrai -- il doivent être configurés pour assumer que l'horloge système est en UTC et compenser de manière appropriée. Mais même dans ce cas, si vous utilisez NTP, votre temps UTC sera correct peu après le redémarrage.</p> <p>La variable d'environnement <code>UNIQUE_ID</code> est construite par codage du quadruplet de 144 bits (adresse IP sur 32 bits, pid sur 32 bits, repère de temps sur 32 bits, compteur 16 bits et index de threads sur 32 bits) en utilisant l'alphabet <code>[A-Za-z0-9_-]</code> (<code>[A-Za-z0-9@-]</code>) avant la version 2.4.47) d'une manière similaire à celle du codage MIME base64, et sa valeur se présente sous la forme d'une chaîne de 24 caractères. L'alphabet MIME base64 est en fait <code>[A-Za-z0-9+/]</code> ; cependant, les caractères <code>+</code> et <code>/</code> nécessitent un codage particulier dans les URLs, ce qui rend leur utilisation peu commode. Toutes les valeurs sont codées dans l'ordre des octets d'une adresse réseau de façon à ce que le codage soit comparable entre des architectures où l'ordre des octets est différent. L'ordre réel de codage est : repère de temps, adresse IP, pid, compteur. Cet ordre de codage possède un but précis, mais il faut souligner que les applications n'ont aucun intérêt à entrer dans les détails de ce codage. Les applications doivent se contenter de traiter la variable <code>UNIQUE_ID</code> comme un symbole opaque, qui peut être comparé avec d'autres <code>UNIQUE_ID</code>s en ne testant que leur égalité.</p> <p>L'ordre a été choisi de façon à ce qu'il soit possible de modifier le codage dans le futur sans avoir à se préoccuper de conflits éventuels avec une base de données de <code>UNIQUE_ID</code>s existante. Les nouveaux codages doivent conserver le repère de temps comme premier élément, et pour le reste, utiliser les même alphabet et longueur en bits. Comme les repères de temps constituent essentiellement un séquence croissante, il suffit que toutes les machines du cluster arrêtent de traiter toute requête dans la même <em>seconde repère</em>, et n'utilisent alors plus l'ancien format de codage. Ensuite, elles peuvent reprendre le traitement des requêtes en utilisant les nouveaux codages.</p> <p>Nous pensons que ceci apporte une solution relativement portable au problème. Les identifiants générés possèdent une durée de vie pratiquement infinie car les identifiants futurs pourront être allongés selon les besoins. Pratiquement aucune communication n'est requise entre les machines du cluster (seule la synchronisation NTP est requise, ce qui représente une charge très faible), et aucune communication entre les processus httpd n'est nécessaire (la communication est implicite et incluse dans le pid assigné par le noyau). Dans des situations très spécifiques, l'identifiant peut être raccourci, mais dans ce cas, d'avantage d'informations doivent être admises (par exemple, les 32 bits de l'adresse IP sont excessifs pour la plupart des sites, mais il n'existe pas de valeur de remplacement portable plus courte).</p> </div> </div> <div class="bottomlang"> <p><span>Langues Disponibles: </span><a href="../../en/mod/mod_unique_id.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../../fr/mod/mod_unique_id.html" title="Français"> fr </a> | <a href="../../ja/mod/mod_unique_id.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | <a href="../../ko/mod/mod_unique_id.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> </div><div id="footer"> <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autorisé sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> <p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!-- if (typeof(prettyPrint) !== 'undefined') { prettyPrint(); } var langToggle = document.querySelector('.lang-toggle'); var topLang = document.querySelector('.toplang'); if (langToggle && topLang) { langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); } var qv = document.getElementById('quickview'); if (qv) { document.body.appendChild(qv); var qvBtn = document.createElement('button'); qvBtn.className = 'qv-toggle'; qvBtn.setAttribute('aria-label', 'Toggle page navigation'); qvBtn.innerHTML = '☰'; document.body.appendChild(qvBtn); qvBtn.addEventListener('click', function() { var isOpen = qv.classList.toggle('open'); if (isOpen) { qv.style.top = window.scrollY + 10 + 'px'; } }); window.addEventListener('scroll', function() { qv.classList.remove('open'); }); } //--><!]]></script> </body></html>