1
0
mirror of https://github.com/php/doc-fr.git synced 2026-04-29 01:33:24 +02:00
Files

143 lines
5.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 372350f3bfad45ba01db850a1a3be40c803e196b Maintainer: jbnahan Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.session-gc" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>session_gc</refname>
<refpurpose>Exécute le ramasse miette des données de session</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>session_gc</methodname>
<void/>
</methodsynopsis>
<simpara>
Par défaut, PHP utilise <link linkend="ini.session.gc-probability">session.gc_probability</link>
pour exécuter le ramasse miette des sessions de façon probabiliste à chaque
requête. Il y a certaines limitations avec cette approche :
</simpara>
<simplelist>
<member>Les sites à faible trafic peuvent ne pas avoir leurs données de session supprimées dans la durée préférée.</member>
<member>Les sites à fort trafic peuvent voir le ramasse-miette s'exécuter trop fréquemment, effectuant un travail supplémentaire inutile.</member>
<member>Le ramasse-miette est effectué lors de la requête de l'utilisateur, et l'utilisateur peut subir un délai.</member>
</simplelist>
<simpara>
Pour les systèmes de production, il est recommandé de désactiver
le ramasse-miette basé sur la probabilité en configurant
<link linkend="ini.session.gc-probability">session.gc_probability</link> à <literal>0</literal>
et explicitement exécuter le ramasse-miette périodiquement, par exemple en utilisant "cron"
sur les systèmes de type UNIX pour exécuter un script qui appelle <function>session_gc</function>.
</simpara>
<note>
<simpara>
Lors de l'appel de <function>session_gc</function> depuis un script PHP en ligne de commande,
le <link linkend="ini.session.save-path">session.save_path</link> doit être défini
à la même valeur que pour les requêtes web, et le script doit avoir les permissions d'accès et de suppression
pour les fichiers de session. Cela peut être affecté par l'utilisateur sous lequel le script s'exécute,
ainsi que par des fonctionnalités de conteneur ou de sandboxing telles que l'option <literal>PrivateTmp=</literal>.
</simpara>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
<function>session_gc</function> renvoie le nombre d'entrées de
sessions supprimées en cas de succès, &return.falseforfailure;.
</simpara>
<note>
<simpara>
Les vieux gestionnaires de sauvegarde de session ne renvoient pas le nombre d'entrées de session supprimées, mais
plutôt seulement un indicateur de succès/échec. Si c'est le cas, <literal>1</literal> est renvoyé indépendamment
du nombre d'entrées de session réellement supprimées.
</simpara>
</note>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Exemple de <function>session_gc</function> pour les planificateurs de tâches comme cron</title>
<programlisting role="php">
<![CDATA[
<?php
// Note: Ce script devrait être exécuté par le même utilisateur que le processus du serveur web.
// Nécessite l'activation des sessions pour initialiser l'accès au gestionnaire de sauvegarde des sessions
session_start();
// Exécuter le Ramasse Miette immédiatement
session_gc();
// Effacer l'ID de session créé par session_gc()
session_destroy();
?>
]]>
</programlisting>
</example>
<example>
<title>Exemple de <function>session_gc</function> pour des scripts accessibles par l'utilisateur</title>
<programlisting role="php">
<![CDATA[
<?php
// Note: il est recommandé que session_gc() soit utilisé par un planificateur de tâches,
// mais il peut être utilisé de la façon suivante.
// Utilisé pour vérifier l'heure de la dernière utilisation du ramasse miette
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;
session_start();
// Exécuter le ramasse miette seulement quand la période s'est écoulée.
// Appeler session_gc() à chaque requête est un gaspillage de ressource.
if (file_exists($gc_time)) {
if (filemtime($gc_time) < time() - $gc_period) {
session_gc();
touch($gc_time);
}
} else {
touch($gc_time);
}
?>
]]>
</programlisting>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>session_start</function></member>
<member><function>session_destroy</function></member>
<member><link linkend="ini.session.gc-probability">session.gc_probability</link></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->