Validation des entrées Crontab avec PHP
Quel est le meilleur moyen de valider une entrée crontab avec PHP? Dois-je utiliser une regex, ou une bibliothèque externe? J'ai un script PHP qui ajoute/supprime des données à partir d'un fichier crontab, mais qui veulent avoir un moyen de vérifier que l'intervalle de temps de la partie est dans un format valide.
source d'informationauteur Wilco
Vous devez vous connecter pour publier un commentaire.
Hmmm, intéressant problème.
Si vous allez vraiment valider, regex ne va pas être suffisant, vous aurez à fait d'analyser l'entrée et de valider chaque de la planification bits. C'est parce que chaque bit peut être un nombre, un mois/jour de la semaine de la ficelle, une gamme (2-7), un ensemble (3, 4, samedi), un Vixie cron-style raccourci (60/5) ou toute combinaison de ce qui précède -- toute seule regex approche va à obtenir de très poilu, rapide.
Juste en utilisant le
crontab
programme de Vixie cron pour valider n'est pas suffisant, car il ne fait pas de valider complètement! Je peux obtenircrontab
à accepter toutes sortes de choses illégales.Dave Taylor Wicked Cool Scripts Shell (Google livres lien) a un script sh qui n'validation partielle, je trouve la discussion intéressante. Vous pouvez également utiliser ou adapter le code.
J'ai aussi mis en place des liens vers deux classes PHP qui font ce que vous dites (dont la qualité, je n'ai pas évalué):
Une autre approche (selon ce que votre application a besoin de le faire) peut-être que PHP construire l'entrée crontab par programmation et de l'insérer, de sorte que vous savez que c'est toujours valable, plutôt que d'essayer de valider un non approuvés chaîne. Ensuite, vous juste besoin de faire un "bâtir une entrée crontab" de l'INTERFACE utilisateur, ce qui pourrait être simple si vous n'avez pas besoin de vraiment compliqué la planification des combinaisons.
Qui a dit que les expressions régulières peuvent pas le faire?
Aimable autorisation de mon employeur, Salir.comvoici un PHPUnit test qui n'cette validation. N'hésitez pas à modifier & distribuer. Je vais apprécier si vous gardez le @author avis & lien vers le site web.