Maison > Questions et réponses > le corps du texte
Je souhaite faire une fonction de remboursement automatique ? Par exemple, si personne ne répond à son contenu dans les trois jours suivant le paiement, il entrera automatiquement dans la procédure de remboursement ! Mais comment écrire cette tâche chronométrée ? Dois-je exécuter le script PHP toutes les secondes ou écrire une tâche planifiée dans MySQL ?
某草草2017-05-16 13:05:45
Il existe plusieurs options, chacune avec des avantages et des inconvénients, voyez laquelle vous convient le mieux :
Le tableau correspondant doit définir le champ d'heure de commande et le champ d'heure d'expiration.
Le premier type : tâche planifiée crontab, exécutez un script php pour analyser la table, et si le délai d'expiration moins le délai de commande est supérieur à trois jours, il passera au statut de remboursement.
Deuxième méthode : utilisez les tâches planifiées de MySQL. Ce qui suit est une démonstration. La logique spécifique peut être écrite selon la vôtre.
create event myevent
on schedule at current_timestamp + interval 1 hour (周期或者时间点)
do
update myschema.mytable set mycol = mycol + 1; (执行的sql)
Troisième méthode : utilisez Redis pour enregistrer et définissez le délai d'expiration sur 3 jours lors de l'enregistrement.
La première option
Avantages : Simple, la logique du code ne change pas beaucoup, il suffit de l'utiliser après l'avoir écrit
Inconvénients : La rapidité n'est pas très bonne, car vous devez exécuter la tâche crontab à une heure fixe
La deuxième option
Avantages : Direct Mysql est terminé, aucun autre lien n'est nécessaire
Inconvénients : Semblable aux avantages de crontab, et si vous n'êtes pas familier avec les tâches planifiées MySQL, vous devez quand même vous familiariser avec elles
La troisième option
Avantages : facile à utiliser , bonne ponctualité des commandes, et vous n'avez pas besoin d'aller sur MySQL une fois io
Inconvénients : le code de la couche logique peut devoir ajouter une logique Redis, et la stratégie de persistance, HA et maître-esclave doit être bien faite, sinon un temps d'arrêt sera tragique.
PHPz2017-05-16 13:05:45
Utilisez les tâches planifiées Linux crontab pour exécuter un script php corrigé de temps en temps~
某草草2017-05-16 13:05:45
Écrivez une tâche planifiée et exécutez le script php toutes les secondes.
phpcn_u15822017-05-16 13:05:45
En retardant la file d'attente des messages, enregistrez la tâche d'écriture de la file d'attente des messages après avoir passé la commande, et déclenchez-la trois jours plus tard ; écrivez ensuite une interface pour juger simplement s'il faut effectuer une opération de remboursement ;
高洛峰2017-05-16 13:05:45
Les remboursements ne sont-ils pas sujets à révision ? Il a également exécuté le script directement et a tout mis en faillite !