<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$step</span></span><span> = </span><span><span class="hljs-number">1</span></span><span> )
</span></span>
: La clé de cache indique que l'élément de cache doit être réduit.
$ Étape : la valeur de la diminution, par défaut, 1 . Vous pouvez spécifier un entier supérieur à 0 pour réduire la valeur numérique dans le cache.
La fonction consiste à soustraire la valeur de la clé spécifiée de la taille de pas donnée. Si la clé n'existe pas ou si la valeur du cache ne peut pas être convertie en un entier, la fonction renvoie false .
L'utilisation la plus élémentaire consiste à soustraire une certaine valeur de la clé spécifiée dans le cache:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Définir une valeur initiale</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_store</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-comment">// Réduire cette valeur</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-comment">// Obtenir des valeurs mises à jour</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">apcu_fetch</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>); </span><span><span class="hljs-comment">// Sortir 8</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans cet exemple, d'abord, une valeur de 10 avec la clé du compteur est stockée via APCU_STORE , puis la valeur est soustraite par 2 via APCU_DEC , et enfin la valeur mise à jour de 8 est obtenue via APCU_FETCH .
Si aucune taille d'étape n'est spécifiée, APCU_DEC soustrisera la valeur par défaut par 1:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Définir une valeur initiale</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_store</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-comment">// Réduction de la taille de pas par défaut</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>);
</span><span><span class="hljs-comment">// Obtenir des valeurs mises à jour</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">apcu_fetch</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>); </span><span><span class="hljs-comment">// Sortir 9</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans cet exemple, APCU_DEC ('COMPRESS') réduit la valeur de compteur de 1, ce qui entraîne 9.
Si APCU_DEC essaie de réduire une clé de cache qui n'existe pas, la fonction renvoie false . Par exemple:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Essayez de réduire une clé inexistante</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'nonexistent_key'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-comment">// Sortir返回值</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// Sortir bool(false)</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Cela indique que si la clé n'est pas dans le cache, APCU_DEC ne créera pas une nouvelle paire de valeurs de clé, elle ne peut fonctionner que sur les clés existantes.
Si la valeur dans le cache n'est pas un entier, APCU_DEC renvoie également False . Cela signifie que si la valeur en cache est une chaîne ou un autre type, la fonction ne peut pas la réduire en tant que nombre.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Définir une valeur non nucère</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_store</span></span><span>(</span><span><span class="hljs-string">'message'</span></span><span>, </span><span><span class="hljs-string">'Hello, World!'</span></span><span>);
</span><span><span class="hljs-comment">// Essayer de réduire</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'message'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-comment">// Sortir返回值</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// Sortir bool(false)</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans ce cas, APCU_DEC renvoie false car la valeur dans le cache n'est pas un nombre.
La fonction APCU_DEC est généralement utilisée dans les scénarios où les valeurs du cache doivent être mises à jour dynamiquement. Par exemple:
COMPTER : APCU_DEC peut réduire très efficacement les nombres dans le cache lorsqu'il est nécessaire d'enregistrer la valeur d'un certain compteur et que vous souhaitez réduire le nombre dans plusieurs demandes.
Mécanisme de limitation actuel : Dans certains scénarios de limitation actuels, APCU_DEC peut être utilisé pour réduire le nombre restant de demandes. Par exemple, une interface API permet 100 appels par jour, et vous pouvez utiliser APCU_DEC pour réduire le nombre restant de fois.
Persistance du cache APCU : le cache APCU est des données en mémoire et n'est pas conservé après les redémarrages PHP. Par conséquent, les données de l'opération APCU_DEC seront perdues. Si vous devez persister le stockage des données, vous devez considérer d'autres solutions de stockage, telles que des bases de données.
Accès simultané : APCU est un cache partagé par un seul processus. Si votre application s'exécute entre plusieurs processus ou serveurs, vous pouvez envisager d'utiliser d'autres schémas de cache plus distribués (tels que redis ou memcached) au lieu d'APCU.
Considérations de performances : APCU est un cache de mémoire efficace, mais la dépendance sur le cache de mémoire peut conduire à des goulots d'étranglement de performances. Par conséquent, il est très important d'utiliser le cache raisonnablement pour éviter les caches excessives ou inutiles de données en cache.
APCU_DEC est une fonction très pratique dans l'extension APCU qui peut aider les développeurs à réduire les valeurs du cache. Il dispose d'un large éventail d'applications dans les compteurs, de la limitation actuelle et d'autres scénarios. La compréhension et la maîtrise de l'utilisation de cette fonction est très importante pour améliorer les performances des programmes PHP et le traitement de l'efficacité des données mises en cache.