2010-11-18 4 views
9

Mon problème est de créer un grand tableau PHP imbriqué qui analyse les informations de plusieurs sources externes.Mise en cache d'un tableau PHP

Sur le premier retour je voudrais mettre en cache ces données. Je ne connais pas vraiment ce que je devrais rechercher, toutes les bonnes ou mauvaises méthodes ou même si c'est une pratique courante! Avoir googlé mais pas vraiment trouvé quelque chose de décent pour un cache noob. J'utilise déjà smarty pour mettre en cache le contenu de ma page (à l'exclusion des bits dynamiques), faire des ajustements apache, réduire etc. pour augmenter les performances mais le chargement de la page est encore loin. Parfois jusqu'à 8 secondes!

Utilisation de PHP5 avec Smarty. Utiliser cURL pour analyser le XML qui est ensuite stocké dans le tableau.

+0

vérifier les performances du téléchargement du XML à l'aide CURL, toujours appeler ressources/contenus externes qui causent les performances, pas le PHP lui-même – ajreal

+0

Merci pour votre commentaire ajreal. Après avoir lu votre commentaire j'ai cherché et je vais chercher à utiliser PHP multi_exec pour exécuter les choses en parallèle. Est-ce la seule façon d'améliorer plusieurs parsing GET et POSTS? Tous les autres conseils et astuces pour augmenter les performances (autre que d'obtenir un serveur plus puissant LOL) – fl3x7

Répondre

15

Vous pouvez essayer de mettre en cache un fichier:

file_put_contents("cache_file", serialize($myArray)); 

ensuite de charger le cache:

$myArray = unserialize(file_get_contents("cache_file")); 

Cela fonctionnera si les choses dans votre tableau sont sérialisable: aucune connexion DB ou fichier poignées, ou des choses comme ça. Les cordes et les chiffres sont très bien.

Si vous avez besoin de quelque chose d'exceptionnel, vous pouvez utiliser un cache basé sur la mémoire comme memcached.

+0

Merci beaucoup! L'option sérialiser semble très utile. J'ai essayé et ça a l'air de marcher. Cependant, j'obtiens l'avertissement: Avertissement: unserialize() [function.unserialize]: Le noeud n'existe plus dans C: \ xampp \ htdocs \ foo.php à la ligne 75 Est-ce dû au problème des chaînes. J'ai vérifié tout mon contenu dans le tableau et ce sont toutes des chaînes ou des entiers. Le résultat semble également bien paraître. Toute aide appréciée – fl3x7

+0

Ne me laisse pas éditer mon commentaire ci-dessus mais je voulais juste dire bien que je n'ai pas trouvé une solution à l'erreur que je reçois je pense que c'est à faire avec ça: http://stackoverflow.com/questions/119234/ php-unserialize-keep-throwing-même-erreur-over-100-times Il continue d'essayer quand même. si quelqu'un peut faire la lumière sur une solution qui serait géniale. Encore une fois merci à tous pour votre aide :) – fl3x7

+0

Woo. Je viens de lancer explicitement les variables comme des chaînes et des ints et ça marche! – fl3x7

0

avez-vous pensé à mettre static $ yourData = array(); dans votre méthode où vous téléchargez les données, puis tester si theres des données dans ce tableau statique et l'utiliser, par le biais obtenir les données? J'espère que cela aide d'une certaine façon: D