2012-11-20 3 views
2

J'ai un webpage qui interroge un certain nombre de services (Amazon, iTunes, etc) pour des informations produit par produit. Il y a 25 produits par page, ce qui signifie que le processus a été très lent. J'ai mis en œuvre apc_add et apc_fetch fonctions qui stockent la sortie brute de chaque service avec une clé sous la forme service|country_code|product_id tout cela fonctionne bien, mais les caches doivent expirer après quelques heures dans chaque cas. Cela tend à signifier que de temps en temps, quelqu'un aura une page à chargement lent.Considérations pour la planification PHP APC

Y at-il un moyen, peut-être en utilisant un travail cron, je peux obtenir le serveur pour faire la lourde tâche de mettre à jour les caches périodiquement? Ou devrais-je considérer une approche complètement différente?

+2

Oui, vous pouvez. Intéressé par quelque chose de plus spécifique? –

+0

est-il littéralement aussi simple que d'écrire une page PHP qui est exécutée à partir de la ligne de commande? Est-ce que cela serait considéré comme une pratique recommandée? –

Répondre

1

Vous pouvez exécuter un travail cron qui appelle la page php depuis la commande php de la ligne de commande de temps en temps (peut-être avec un paramètre lui indiquant d'ignorer la sortie) et ainsi rafraîchir le cache à chaque période choisie.

Vous pouvez même donner un paramètre (qui pourrait être le même qu'avant) qui force l'actualisation lorsque vous exécutez à partir de la ligne de commande et donc le travail intensif sera effectué uniquement sur le serveur.

Dans ce cas, vous ne supprimez pas automatiquement le cache, mais uniquement lorsque le travail cron est exécuté.

0

Vous pouvez écrire un service d'arrière-plan qui obtient les informations dont vous avez besoin de ces services et les stocke dans un format convinient. Je ne pense pas que vous devriez stocker des réponses brutes. Ne pensez pas à cela comme un cache - considérez cela comme un stockage principal. Gardez à l'esprit que les informations de ces services ne seront pas mises à jour de temps en temps. Selon le type d'information que vous demandez, cela pourrait être bon.