J'ai une table avec 200 lignes. Je cours un travail de cron toutes les 10 minutes pour effectuer une sorte d'insertion/mise à jour sur la table. L'opération doit être effectuée uniquement sur 5 lignes à la fois chaque fois que le travail cron est exécuté. Ainsi, dans les 10 premières minutes, les enregistrements 1-5 sont mis à jour, les enregistrements 5-10 dans la 20e minute et ainsi de suite.Comment exécuter efficacement ce travail cron?
Lorsque le travail cron s'exécute pour la 20e fois, tous les enregistrements de la table auraient été mis à jour exactement une fois. C'est ce qui doit être réalisé au moins. Et le prochain travail de cron devrait répéter le processus encore.
Le problème: est que, chaque fois qu'un travail sera exécutée, l'opération d'insertion/mise à jour doit être effectuée sur N
lignes (pas seulement 5 lignes). Donc, si N
est 100, tous les enregistrements auraient été mis à jour par seulement 2 tâches cron. Et le prochain travail cron répéterait le processus à nouveau.
Voici un exemple:
Voici le tableau que j'ai actuellement (200 dossiers). Chaque fois qu'un travail cron s'exécute, il doit choisir N
enregistrements (que je définis comme variable en PHP) et mettre à jour le champ time_md5
avec la valeur MD5 de l'heure actuelle.
+---------+-------------------------------------+
| id | time_md5 |
+---------+-------------------------------------+
| 10 | 971324428e62dd6832a2778582559977 |
| 72 | 1bd58291594543a8cc239d99843a846c |
| 3 | 9300278bc5f114a290f6ed917ee93736 |
| 40 | 915bf1c5a1f13404add6612ec452e644 |
| 599 | 799671e31d5350ff405c8016a38c74eb |
| 56 | 56302bb119f1d03db3c9093caf98c735 |
| 798 | 47889aa559636b5512436776afd6ba56 |
| 8 | 85fdc72d3b51f0b8b356eceac710df14 |
| .. | ....... |
| .. | ....... |
| .. | ....... |
| .. | ....... |
| 340 | 9217eab5adcc47b365b2e00bbdcc011a | <-- 200th record
+---------+-------------------------------------+
Ainsi, le premier enregistrement (id 10) ne doit pas être mis à jour plus d'une fois, jusqu'à ce que tous les 200 dossiers sont mis à jour une fois - le processus devrait recommencer une fois tous les enregistrements sont mis à jour une fois. J'ai une idée de la façon dont cela pourrait être réalisé, mais je suis sûr qu'il existe des moyens plus efficaces de le faire.
Des suggestions?
Votre mécanisme de mise à jour est-il un script PHP exécuté par cron? –
Oui, c'est un script PHP + mySQL. – Yeti