<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.basic.php.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'book.yac.php',
    1 => 'Yac',
    2 => 'Yac',
  ),
  'up' => 
  array (
    0 => 'refs.basic.php.php',
    1 => 'Affecte le comportement de PHP',
  ),
  'prev' => 
  array (
    0 => 'function.xhprof-sample-enable.php',
    1 => 'xhprof_sample_enable',
  ),
  'next' => 
  array (
    0 => 'yac.setup.php',
    1 => 'Installation/Configuration',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/yac/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.yac.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.yac" class="book">
 
 <h1 class="title">Yac</h1>
 

 <div id="intro.yac" class="preface">
  <h1 class="title">Introduction</h1>
  <p class="simpara">
   Yac (Yet Another Cache) est un cache de données utilisateur en mémoire
   partagée, sans verrou, pouvant être utilisé pour remplacer APC ou un
   memcached local.
  </p>
  <p class="simpara">
   Yac stocke les données en mémoire partagée, ce qui les rend visibles par
   chaque worker PHP de la même machine sans aucune communication
   inter-processus. Au lieu de verrous, Yac repose sur des mises à jour
   atomiques de slots et quelques sondes de collision, ce qui signifie qu&#039;un
   défaut de cache ne bloque jamais une requête, et qu&#039;une écriture
   concurrente peut au pire provoquer un échec de stockage ou une lecture
   ratée que l&#039;appelant peut simplement réessayer.
  </p>
  <p class="simpara">
   Sans verrou ni communication inter-processus dans le chemin d&#039;accès,
   une lecture est essentiellement une recherche dans une table de hachage
   en mémoire partagée. Yac est ainsi extrêmement rapide, avec une latence
   de lecture à la microseconde, et son débit peut s&#039;adapter au nombre de
   workers tant que les écritures sont réparties sur plusieurs clés ; voir les
   <a href="https://github.com/laruence/yac/blob/master/README.md#benchmarks" class="link external">&raquo;&nbsp;tests de performance</a>.
  </p>
  <p class="simpara">
   Parce que Yac échange des garanties de cohérence contre vitesse et
   débit, il convient mieux aux données coûteuses à produire mais faciles à
   recréer : fragments de page, instantanés de configuration, petites
   réponses de service et autres caches locaux. Il ne doit pas être utilisé
   comme stockage faisant autorité pour des données irremplaçables.
  </p>
  <p class="simpara">
   Depuis yac 2.4.0, les petites valeurs scalaires —
   <strong><code><a href="reserved.constants.php#constant.null">NULL</a></code></strong>, booléens, la plupart des entiers (ceux qui
   tiennent sur 60 bits signés dans une compilation 64 bits), chaînes jusqu&#039;à
   7 octets et tableaux vides — sont stockées directement dans le slot de
   la table de hachage plutôt que dans un bloc de valeur séparé
   (« valeurs intégrées »), ce qui supprime l&#039;allocation et la copie de
   bloc à chaque accès et améliore significativement les performances tout
   en réduisant l&#039;utilisation mémoire. La version 2.4.0 a également
   remplacé le moteur de compression FastLZ par LZ4, rendant les lectures
   compressées plusieurs fois plus rapides.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="simpara">
    La mémoire partagée n&#039;est visible qu&#039;au sein d&#039;une seule machine. Pour
    partager un cache entre plusieurs serveurs, utiliser un cache réseau tel
    que Memcached ou Redis.
   </p>
  </p></blockquote>
 </div>

 






 






 






 
 







<ul class="chunklist chunklist_book"><li><a href="yac.setup.php">Installation/Configuration</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="yac.requirements.php">Pr&eacute;-requis</a></li><li><a href="yac.installation.php">Installation</a></li><li><a href="yac.configuration.php">Configuration &agrave; l'ex&eacute;cution</a></li><li><a href="yac.resources.php">Types de ressources</a></li></ul></li><li><a href="yac.memory-management.php">Gestion de la m&eacute;moire</a></li><li><a href="yac.constants.php">Constantes pr&eacute;-d&eacute;finies</a></li><li><a href="class.yac.php">Yac</a> — La classe Yac<ul class="chunklist chunklist_book chunklist_children"><li><a href="yac.add.php">Yac::add</a> — Stocke une valeur sans &eacute;craser une valeur existante</li><li><a href="yac.construct.php">Yac::__construct</a> — Constructeur</li><li><a href="yac.delete.php">Yac::delete</a> — Supprime des &eacute;l&eacute;ments du cache</li><li><a href="yac.dump.php">Yac::dump</a> — Vide les entr&eacute;es du cache pour inspection</li><li><a href="yac.flush.php">Yac::flush</a> — Vide le cache</li><li><a href="yac.get.php">Yac::get</a> — R&eacute;cup&egrave;re des valeurs du cache</li><li><a href="yac.getter.php">Yac::__get</a> — R&eacute;cup&egrave;re une valeur via la syntaxe propri&eacute;t&eacute;</li><li><a href="yac.info.php">Yac::info</a> — &Eacute;tat du cache</li><li><a href="yac.set.php">Yac::set</a> — Stocke une valeur dans le cache</li><li><a href="yac.setter.php">Yac::__set</a> — Stocke une valeur via la syntaxe propri&eacute;t&eacute;</li></ul></li></ul></div><?php manual_footer($setup); ?>