2008-09-23 5 views
4

J'ai besoin d'un moyen de modifier une valeur dans une table après un certain laps de temps. Ma méthode actuelle est la suivante:Evénements chronométrés avec php/MySQL

  • temps de fin d'insertion pour la période d'attente dans le tableau
  • lorsqu'un utilisateur charge une page demandant la valeur à modifier, vérifiez si le courant> = heure de fin
  • si il est, changer la valeur et supprimer le champ de fin de temps, si ce n'est pas, ne rien faire

Cela va être une caractéristique majeure sur le site, et donc l'efficacité est la clé; dans cet esprit, vous pouvez probablement voir le problème avec la façon dont je le fais. Ce même morceau de code va être appelé chaque fois que quelqu'un accède à une page qui a besoin d'informations.

Toute suggestion d'amélioration ou de meilleure méthode serait grandement appréciée, de préférence en php ou en perl. En réponse aux réponses cron job: Merci, et j'aimerais faire quelque chose comme ça si possible, mais les limites des hôtes sont le problème. Comme c'est une partie importante de l'application, elle ne peut pas être limitée.

+0

Quel genre de temps regardez-vous? mise à jour après quelques secondes serait facile, mise à jour après quelques heures, plus difficile. –

+0

sur un hôte partagé, c'est à peu près le meilleur que vous pouvez faire. S'il s'agit d'une application suffisamment importante pour mettre en doute l'efficacité de cette méthode, vous avez besoin d'un meilleur hôte. Vous pouvez obtenir un VPS abordable qui vous donnera un accès root et que vous pouvez lancer Cron aussi souvent que vous le souhaitez. – Aeon

Répondre

2

Pouvez-vous utiliser un travail cron pour vérifier périodiquement chaque champ de la base de données et mettre à jour de cette façon?

Une grande partie de ceci est la fréquence à laquelle les mises à jour sont nécessaires. Un grand nombre d'hôtes partagés limitent la fréquence des vérifications cron, par exemple pas plus de toutes les 15 minutes, ce qui pourrait affecter l'application. Pourquoi ne pas utiliser un cron pour mettre à jour ces informations dans les coulisses?

5

De cette façon, vous déchargez les contrôles sur chaque hit de page, et pouvez planifier le timing pour répondre aux exigences de votre application.

3

Votre solution semble très logique, puisque vous n'avez pas accès à cron. Un autre moyen pourrait être de stocker la valeur dans un fichier, et la prochaine fois que la page est chargée, vérifiez quand elle a été modifiée pour la dernière fois (filemtime ("checkfile.txt")), et décidez si elle doit être modifiée à nouveau. Vous devriez tester les performances pour les deux méthodes.

+0

Cela semble être une bonne idée. Je vais essayer. Merci. – cblades

0

Si la performance commence vraiment être un problème, (ce qui veut dire beaucoup plus que vous réalisez probablement), vous pouvez utiliser Memcached pour stocker les informations ...

1

Vous pouvez utiliser un déclencheur de quelque sorte sur chaque page charge. Je n'ai vraiment aucune idée de comment cela affecterait la performance, mais peut-être quelqu'un d'autre peut faire la lumière.

+0

C'est essentiellement ce que je fais, mais merci quand même. – cblades

Questions connexes