Mysql
 sql >> Base de données >  >> RDS >> Mysql

tâches cron ou planificateur PHP

Je pense que votre concept doit changer.

PHP ne peut pas planifier une tâche, MySQL non plus. Les déclencheurs dans MySQL s'exécutent lorsqu'une requête mysql se produit, pas à un moment précis. Ni l'un ni l'autre

Cette limitation n'est généralement pas un problème dans le développement Web. La raison en est que votre application PHP doit contrôler toutes les données entrantes et sortantes. Habituellement, cela signifie uniquement le code HTML qui affiche ces données, ou d'autres formats pour les utilisateurs, ou d'autres programmes.

Dans votre cas, vous pouvez y penser de cette façon. Le délai est une date fixe. Vous pouvez le traiter comme des données et l'enregistrer dans votre base de données. Le moment où l'échéance arrive n'est pas important, c'est que les données que vous avez envoyées dans votre base de données soient visualisées correctement.

Lorsqu'une demande est faite à votre candidature, vérifiez si la date de l'échéance est passée, si elle l'est, puis affichez que le projet est clos - ou mettez à jour que le projet est clos, juste avant l'affichage.

Il n'y a vraiment aucune raison de mettre à jour les données indépendamment de votre application PHP.

Habituellement, les seules choses que vous souhaitez planifier sont les tâches qui affecteraient votre application en termes de charge, ou qui ne doivent être effectuées qu'une seule fois, ou lorsque la simultanéité ou le temps est un problème.

Dans votre cas, rien de tout cela ne s'applique.

PS:Je n'ai pas essayé PHPscheduler mais je peux supposer que ce n'est pas un vrai planificateur. Cron est un démon qui dort jusqu'à ce qu'une tâche donnée soit due dans sa file d'attente, exécute la tâche, puis dort jusqu'à ce que la suivante soit due (du moins c'est ce qu'il fait dans l'algorithme actuel). PHP ne peut pas faire cela sans les extensions sockets et fork, en tant que configuration spéciale. Donc, PHPscheduler vérifie très probablement si une date pour une tâche a expiré, à chaque chargement d'une page Web (chaque fois que PHP exécute une page). Ce n'est pas différent que de vérifier si la date du projet a expiré, sans la surcharge de PHPScheduler.