2009-11-02 3 views
0

Sur un serveur Windows, nous avons une tâche qui s'exécute occasionnellement, en utilisant "Tâches planifiées" pour le contrôler. (préférable de ne pas l'exécuter directement car il peut être nécessaire de l'exécuter en tant qu'utilisateur particulier et la configuration de la tâche planifiée comporte tous les mots de passe appropriés).Lancer la tâche planifiée à partir du script

Nous aimerions contrôler cela via un script PHP, afin que les visiteurs d'un site web puissent demander que la tâche soit exécutée. Est-ce que PHP peut déclencher la tâche planifiée? Y compris donner une erreur ou ne rien faire si la tâche est déjà en cours.

Note: probablement pas etc fichiers de verrouillage d'une solution utile, car la tâche pourrait échouer/accident avant la fin

Répondre

0

Si vous avez le contrôle de l'environnement PHP, vous pouvez alors exécuter directement l'application externe dans PHP en utilisant shell_exec et avec des paramètres supplémentaires. Vous pouvez également utiliser des contrôles similaires à mutex dans la tâche associée pour empêcher plusieurs exécutions.

+0

(a) comment cela permet de faire tourner comme un autre nom d'utilisateur, en utilisant la configuration de Windows de l'autre utilisateur (b) comment cette vérification si la tâche est déjà en cours d'exécution? – OJW

2

Un moyen facile: laissez votre tâche s'exécuter tout le temps mais ne faites rien tant qu'il ne trouve pas de fichier spécifique, puis supprimez-le et faites son travail (puis revenez en attente).

scripts PHP Vous (ou autre) juste avoir à créer ce fichier ...

+0

Bien sûr, la boucle 'while (true)' devrait avoir une instruction Sleep quelque part alors elle attend avant la prochaine vérification du fichier. –

+0

bonne réponse, bien que si la tâche plantait alors il faudrait quelque chose pour le redémarrer. Ce qui revient à: comment la chose qui redémarre sait-elle si la tâche est en cours? – OJW