2009-11-16 4 views
8

Mon Google-fu n'a pas révélé ce que je cherchais, alors je le présente à la foule.Équivalent PHP des objets Application/Cache ASP.NET

Venant d'un arrière-plan de développement ASP.NET, je suis habitué à avoir les collections disponibles pour Application et Cache me planque rarement modifiées, mais les ressources souvent utilisées (comme les lignes de consultation d'une base de données ou le contenu de statique Documents XML) dans la mémoire du serveur web, je n'ai donc pas besoin de recharger ces éléments fréquemment utilisés lors de chaque requête.

Est-ce que PHP a un équivalent? J'ai lu brièvement sur l'extension memcache, mais cela ne fonctionnera pas pour moi (car je n'ai pas de contrôle sur la configuration du serveur.) Je suis tenté d'implémenter quelque chose qui me permettrait de pré-analyser ou pré -sélectionner les ressources et générer une sorte de "fichier" de cache PHP qui construirait l'objet mis en cache à partir des littéraux stockés dans le fichier, mais cela me semble une solution très hacky.

Y a-t-il quelque chose en PHP (ou, en variante, une bibliothèque auxiliaire quelconque) qui me permettra d'accomplir cela en utilisant les meilleures pratiques?

Répondre

5

En bref, non, une telle chose n'est pas disponible nativement en PHP. Pour comprendre pourquoi, vous devez comprendre que PHP a tout son environnement construit pour chaque requête, et il est ensuite démoli à la fin de la requête. PHP vous donne $ _SESSION pour stocker les variables de session, mais après avoir creusé dans les docs, vous verrez que cette variable est également créée lors de chaque requête. PHP (ou mod php pour être plus précis) est fondamentalement différent des autres "serveurs d'applications". Fondamentalement, ce n'est pas un serveur d'application. C'est un coureur de script par requête. Maintenant, ne vous méprenez pas, PHP vous permet de faire du stockage de données au niveau de l'application, mais vous devrez aller à une base de données, ou sur le disque pour l'obtenir. Rappelez-vous cependant, ne vous inquiétez pas de l'optimisation de la performance jusqu'à ce qu'il soit démontré que la préformance est un problème. Et je suppose que 99 fois sur 100, au moment où la performance est un problème qui n'est pas dû à un mauvais code que vous avez écrit, vous aurez les ressources pour construire votre propre petit serveur memcached.

+0

Ah, oui. Je laisse échapper de ma tête comment PHP est invoqué par le serveur web. Merci de me le rappeler :) –

0

Jetez un oeil à la bibliothèque Zend_Cache, par exemple. Il peut mettre en cache dans plusieurs backends.