web-dev-qa-db-fra.com

Comment vérifier si le cache d'opcode APC fonctionne correctement en PHP?

J'utilise PHP avec le cache APC activé:

apc.cache_by_default => On
apc.enabled => On
apc.ttl => 7200

Maintenant, comment puis-je savoir s'il utilise le cache d'opcode à 100%.

Par exemple, disons que j'ai ce fichier PHP:

<?php
echo "Hi there";
?>

Maintenant, après avoir exécuté ce fichier, changeons-le en echo "Bye there";

Cela ne devrait-il pas faire écho à "Hi there" puisque le TTL de 7200 secondes n'est pas encore terminé? Ai-je raison? Si oui, pourquoi cela fait-il écho à "Bye there"? Et si je me trompe comment puis-je le forcer à utiliser le cache opcode même après avoir changé le fichier?

26
Lina

Je ne pense pas que vous voudrez le faire en production, mais vous pouvez toujours utiliser apc_cache_info() .

function is_file_cached($file) {
    $info = apc_cache_info();
    foreach ($info['cache_list'] as $cache) {
        if ($cache['filename'] == $file) return true;
    }
    return false;
}

Notez que cela itérera sur chaque fichier qui est mis en cache en vérifiant celui spécifié, donc ce n'est pas efficace.

Et en ce qui concerne votre question spécifique, APC invalidera automatiquement le cache d'un fichier lorsqu'il changera. Ainsi, lorsque vous modifiez le fichier, APC le détecte en silence et sert le nouveau fichier. Vous pouvez désactiver cela en définissant apc.stat = 0 .

19
ircmaxell

Le moyen le plus simple que j'ai pu trouver pour savoir si APC fonctionne était de créer un nouveau fichier PHP contenant ce code ...

<pre><?php
print_r(apc_cache_info());

Il transfère le contenu de apc_cache_info () à l'écran (attention, sur un grand site en direct, cela pourrait être lots de données!).

Chaque fois que vous rechargez ce fichier PHP, vous devriez voir num_hits augmenter, ce qui signifie que le cache d'opcode a été utilisé. Une erreur indique qu'APC a dû recompiler le fichier à partir de la source (généralement effectué à chaque modification).


Pour une interface plus agréable avec ces informations vous pouvez utiliser le apc.php fichier fourni avec APC. J'ai copié cela dans le répertoire de mon site Web à l'aide de cette commande de console (les emplacements de vos dossiers peuvent différer) ...

cp /usr/share/doc/php-apc/apc.php /usr/share/nginx/html/apc-stats.php

L'exécution de ce fichier dans votre navigateur vous donne de jolies couleurs et graphiques!

Voir ce lien pour plus d'informations:
http://www.electrictoolbox.com/apc-php-cache-information/

21
Simon East

Normalement, APC vérifie si le fichier demandé a été modifié depuis qu'il a été mis en cache. Vous pouvez contrôler cela avec apc.stat .

9
rik