<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.apcu.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.apcu-entry.php',
    1 => 'apcu_entry',
    2 => 'Recupera o genera de forma at&oacute;mica una entrada de cach&eacute;',
  ),
  'up' => 
  array (
    0 => 'ref.apcu.php',
    1 => 'Funciones APCu',
  ),
  'prev' => 
  array (
    0 => 'function.apcu-enabled.php',
    1 => 'apcu_enabled',
  ),
  'next' => 
  array (
    0 => 'function.apcu-exists.php',
    1 => 'apcu_exists',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/apcu/functions/apcu-entry.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.apcu-entry" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">apcu_entry</h1>
  <p class="verinfo">(PECL apcu &gt;= 5.1.0)</p><p class="refpurpose"><span class="refname">apcu_entry</span> &mdash; <span class="dc-title">
   Recupera o genera de forma atómica una entrada de caché
  </span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.apcu-entry-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>apcu_entry</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$key</code></span>, <span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$callback</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$ttl</code><span class="initializer"> = 0</span></span>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>

  <p class="simpara">
   Intenta de forma atómica encontrar <code class="parameter">key</code> en la caché; si no se encuentra, se llama a <code class="parameter">callback</code>,
   pasando <code class="parameter">key</code> como único argumento. El valor de retorno de la llamada se almacena en caché con el <code class="parameter">ttl</code>
   especificado opcionalmente y se devuelve.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    Cuando el control entra en <span class="function"><strong>apcu_entry()</strong></span>, se adquiere de forma exclusiva el bloqueo de la caché, que se libera cuando el control
    sale de <span class="function"><strong>apcu_entry()</strong></span>. En efecto, esto convierte el cuerpo de <code class="parameter">callback</code> en una sección crítica, impidiendo que
    dos procesos ejecuten las mismas rutas de código concurrentemente. Además, prohíbe la ejecución concurrente de cualquier otra función de APCu,
    ya que adquirirán el mismo bloqueo.
   </span>
  </p></blockquote>
  <div class="warning"><strong class="warning">Advertencia</strong>
   <p class="simpara">
    La única función de APCu que puede llamarse de forma segura desde <code class="parameter">callback</code> es <span class="function"><strong>apcu_entry()</strong></span>.
   </p>
  </div>
 </div>

 <div class="refsect1 parameters" id="refsect1-function.apcu-entry-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">key</code></dt>
    <dd>
     <span class="simpara">
      Identificador de la entrada de caché
     </span>
    </dd>
   
   
    <dt><code class="parameter">callback</code></dt>
    <dd>
     <span class="simpara">
      Una retrollamada que acepta <code class="parameter">key</code> como único argumento y devuelve el valor a almacenar en caché.
     </span>
    </dd>
   
   
    <dt><code class="parameter">ttl</code></dt>
    <dd>
     <span class="simpara">
      Tiempo de vida; almacena el valor de retorno del <code class="parameter">callback</code> en la caché durante
      <code class="parameter">ttl</code> segundos. Después de que
      <code class="parameter">ttl</code> haya transcurrido, la entrada almacenada será
      eliminada de la caché (en la siguiente petición). Si no se proporciona <code class="parameter">ttl</code>
      (o si el <code class="parameter">ttl</code> es
      <code class="literal">0</code>), el valor persistirá hasta que se elimine manualmente de
      la caché, o deje de existir en la caché (limpieza,
      reinicio, etc.).
     </span>
    </dd>
   
  </dl>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.apcu-entry-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="simpara">
   Devuelve el valor almacenado en caché
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.apcu-entry-examples">
  <h3 class="title">Ejemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Un ejemplo de <span class="function"><strong>apcu_entry()</strong></span></strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$config </span><span style="color: #007700">= </span><span style="color: #0000BB">apcu_entry</span><span style="color: #007700">(</span><span style="color: #DD0000">"config"</span><span style="color: #007700">, function(</span><span style="color: #0000BB">$key</span><span style="color: #007700">) {<br /> return [<br />   </span><span style="color: #DD0000">"fruit" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">apcu_entry</span><span style="color: #007700">(</span><span style="color: #DD0000">"config.fruit"</span><span style="color: #007700">, function(</span><span style="color: #0000BB">$key</span><span style="color: #007700">){<br />     return [<br />       </span><span style="color: #DD0000">"apples"</span><span style="color: #007700">,<br />       </span><span style="color: #DD0000">"pears"<br />     </span><span style="color: #007700">];<br />   }),<br />   </span><span style="color: #DD0000">"people" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">apcu_entry</span><span style="color: #007700">(</span><span style="color: #DD0000">"config.people"</span><span style="color: #007700">, function(</span><span style="color: #0000BB">$key</span><span style="color: #007700">){<br />     return [<br />      </span><span style="color: #DD0000">"bob"</span><span style="color: #007700">,<br />      </span><span style="color: #DD0000">"joe"</span><span style="color: #007700">,<br />      </span><span style="color: #DD0000">"niki"<br />     </span><span style="color: #007700">];<br />   })<br /> ];<br />});<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$config</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">array(2) {
  [&quot;fruit&quot;]=&gt;
  array(2) {
    [0]=&gt;
    string(6) &quot;apples&quot;
    [1]=&gt;
    string(5) &quot;pears&quot;
  }
  [&quot;people&quot;]=&gt;
  array(3) {
    [0]=&gt;
    string(3) &quot;bob&quot;
    [1]=&gt;
    string(3) &quot;joe&quot;
    [2]=&gt;
    string(4) &quot;niki&quot;
  }
}</pre>
</div>
   </div>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.apcu-entry-seealso">
  <h3 class="title">Ver también</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.apcu-store.php" class="function" rel="rdfs-seeAlso">apcu_store()</a> - Almacena una variable en la cach&eacute; de datos</span></li>
   <li><span class="function"><a href="function.apcu-fetch.php" class="function" rel="rdfs-seeAlso">apcu_fetch()</a> - Recupera una variable almacenada en la cach&eacute;</span></li>
   <li><span class="function"><a href="function.apcu-delete.php" class="function" rel="rdfs-seeAlso">apcu_delete()</a> - Elimina una variable almacenada en cach&eacute;</span></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>