Je me demandais, j'ai ce grand tableau, est-il possible de l'avoir qu'une seule fois en mémoire plutôt qu'une fois par thread? Prenez les balises ici sur stackoverflow comme exemple. Elles changent très rarement, pourquoi ne pas avoir un seul emplacement en mémoire pour elles? Et peut-être même conserver ce tableau en mémoire en permanence?
Réponses
Trop de publicités?Jetez un coup d'œil à apc_store
Contrairement à de nombreux autres mécanismes en PHP, les variables stockées à l'aide de apc_store() persisteront entre les requêtes (jusqu'à ce que la valeur soit supprimée du cache).
Pour cela, vous pouvez utiliser les fonctions shmop
ou un cache mémoire dédié comme memcached.
Chaque processus php s'exécute isolément des autres. C'est différent de Java par exemple où, lorsque vous avez un seul objet, vous pouvez le maintenir en vie jusqu'au redémarrage de la JVM.
malheureusement, si vous avez un objet (petit ou grand), il sera chargé à chaque fois que le script php s'exécute MAIS si vous voulez partager quelque chose en mémoire entre les exécutions, vous pouvez utiliser APC, memcache ou mémoire partagée
Entre ces options, je vous recommande vivement APC.
Non - les problèmes de synchronisation inhérents au partage d'une seule variable directement entre les interprètes PHP rendent cela impossible. Il est beaucoup plus probable que Stack Overflow évite tout simplement de "penser" à l'ensemble du tableau de balises en une seule fois.
Vous pouvez utiliser les fonctions de stockage de variables dans APC (apc_store et apc_fetch) pour stocker des données sérialisées dans la mémoire partagée, cependant.